Automated pumping system and methods

ABSTRACT

A system for controlling a pump can include a fluid level sensor, a fuel level sensor, one or more oil pressure sensors, a pump fluid sensor, and a pump controller. The pump controller can provide speed instructions to a pump having an engine control unit, an engine, and a volute. The pump controller can include a user interface that includes a display and may also include a transceiver that is operatively engaged to a remote user device through a computer network. A method of controlling a pump can include characterizing the operation of the pump, performing a safety check of the pump, determining a level of a fluid in a tank, and providing the speed instructions to the pump.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application claims priority to, and the benefit of, U.S. Provisional Patent Application No. 62/636,579, filed Feb. 28, 2018, which is hereby incorporated by reference in its entirety.

FIELD OF THE INVENTION

The present invention concerns a pump controller and fluid pumping systems. More particularly, some embodiments of the present invention concern a pump controller that can be coupled with a pump, pump fluid sensors, fluid level sensors, fuel sensors, and oil pressure sensors. Some embodiments of the present invention concern a pump controller for characterizing, operating, and exchanging information with connected devices which may use mathematical techniques, such as proportional-integral-derivative control. The present invention also concerns a pumping system for draining and filling fluid containers or reservoirs.

BACKGROUND OF THE INVENTION

Conventional systems and methods of controlling fluid pumps are limited by pump controller devices which comprise basic “start-and-stop” technology—capable of solving only basic pumping system needs. Conventional pump controllers are also typically very cumbersome, making it difficult for the average user to set up and operate. Due to their limited capabilities, conventional controllers lack the ability to protect and properly maintain pump health. Furthermore, conventional controllers are limited to manual operation—that is, a user must initiate every operation or action the controller makes. Furthermore, conventional pump controllers are inefficient and can waste resources such as water and energy. Conventional pumping systems and devices also have limited adaptability for future changes in technology due to outdated architecture and interfaces.

There is therefore a need for a pump controller which is easy to operate, adaptable, efficient, and can handle complex pumping situations. Furthermore, there is a need for a pump controller which can automate a fluid pumping system with little to no user interaction. Moreover, there exists a need for a pump controller which can interface with other devices and sensors to characterize and protect a pump and its internal components, while also maximizing the output and efficiency of the pump and pumping system.

BRIEF SUMMARY OF THE INVENTION Pump Controller Apparatus

The present invention concerns a controller for controlling a pump. The controller may include one or more interfaces, ports, devices, or processors by which a user may operate the controller and by which the controller operates, or communicates with, connected devices. The controller may include a processor, a memory device for storing processor instructions, a user interface, a pump interface, and a fluid sensor interface.

In some embodiments, the controller may include a user interface which has a display, such as, but not limited to, a human-machine interface (“HMI”), human interface device (“HID”), or graphical user interface (“GUI”). One or more buttons, switches, and/or knobs, or the like, may be provided as a means by which the user can make selections shown on the user interface display or by which the user can turn on (or off) the controller, toggle between modes, configure the controller, or otherwise operate the controller. One or more lights may also be provided within the user interface which, depending on the state of the light (i.e., on or off), may provide information about the current status or condition of the controller or any of its connected devices. In certain embodiments, the user interface may include a touchscreen display, allowing the user to select an action by touching an area of the screen corresponding to the action. In other embodiments, the user interface may also have a transceiver and a remote user device (e.g., smartphone, tablet, laptop) which are operatively engaged with a computer network, allowing the user to remotely connect to, and operate, the controller.

In some embodiments, the controller can connect to the engine controller of the pump by means of the pump interface. Using this interface, the controller may communicate with the engine controller in order to power, operate, and/or exchange information with the pump. For example, the user can use the controller to turn the pump on or off, adjust the engine speed, and/or retrieve data about the current status of the pump (e.g., oil pressure, coolant temperature, fuel level, voltage, etc.). In certain embodiments, an emergency stop switch may be connected to the controller via the pump interface. When activated, the emergency stop switch suspends, or freezes, the currently active mode or program of the controller and immediately removes power to the pump engine to shut it down.

In some embodiments, a pump controller may use pump data, received through the various sensor interfaces, to map a pump curve. For example, while a pump is running, the pump controller can store and plot current running parameters to determine the pump curve associated with the pump. The pump controller can also compare current running parameters to a pump curve to determine if a pump is running within the pump curve. The pump controller can display a warning message indicating if the pump is operating outside of the pump curve.

In accordance with some embodiments of the present invention, the controller can also connect to one or more fluid level sensors by means of the fluid sensor interface. Using this interface, the controller may be adapted to exchange information with a fluid level sensor. For example, the controller may be connected to a float, which, depending on the state thereof (i.e., activated or inactivated), can provide information to the controller about a fluid level within a fluid container, such as a tank. The controller may also be connected to a transducer, which can provide an indication of the current fluid level. The controller can also connect to a fluid pressure sensor, which can provide fluid pressure readings at a given time and position. In certain embodiments, the controller may be connected to fluid pressure sensors provided within the inlet and outlet of a volute of the pump in order to monitor inlet and outlet pressure (which may be indicative of operational issues within the pump, such as cavitation).

In some embodiments, a pump controller may use pump data, received through the various sensor interfaces, to map a pump curve. For example, while a pump is running, the pump controller can store and plot current running parameters to determine the pump curve associated with the pump. The pump controller can also compare current running parameters to a pump curve to determine if a pump is running within the pump curve. The pump controller can display a warning message indicating if the pump is operating outside of the pump curve.

Pump Controller System

As described above, the controller of the present invention can interface with devices and sensors to form a system for controlling a pump. For example, the system may comprise a pump controller, a pump, and one or more sensors. Within the system, the pump controller may act as the central communication hub, through which information is received, processed, and transmitted. More specifically, the controller can send commands to the pump based on user input (e.g., by selecting a mode or program, or by setting parameters) or based on feedback from a fluid level or pump sensor. The system may also include a remote connection, allowing a user to remotely access and operate the pump controller via a remote user device. In some embodiments, the system may include: a pump controller; a pump having an engine and electronic engine controller; one or more fluid level sensors; a fuel level sensor; inlet and outlet oil pressure sensors for detecting pressure in an oil line of the pump engine; and inlet and outlet fluid pressure sensors for detecting fluid pressure in the pump. In certain embodiments, the system network may also include one or more floats and/or transducers.

The pump controller may include one or more programs, or modes of operation. For example, the controller may include a manual mode, an automatic mode, a diagnostics mode, and a configuration mode. Prior to operation, the user may configure the controller for use with a connected pump by selecting configuration mode on the user interface or by connecting a user device, such as a laptop, to the pump controller. On the user interface, or user device, the user may enter characterization parameters for the connected devices (e.g., pump engine type), as well as operational parameters (e.g., engine throttle set point). Once the controller is configured, the user may run the controller in manual mode or automatic mode.

In manual mode, the pump engine may be started by pressing a button or switch on the controller user interface. Once the engine is running, the user may adjust the engine throttle by adjusting the revolutions-per-minute (“RPM”) on the user interface. In automatic mode, the pump engine may be started by the pump controller via a signal from a fluid level sensor. Once the engine is running, the pump may operate on a fixed throttle based on the RPM set by the user during configuration. Alternatively, the engine throttle may be automatically adjusted, as fluid levels (or pressure) rise or fall, by the controller based on feedback received from a fluid level or pressure sensor. In this case, the throttle may be adjusted at a linear rate, relative to the fluid level or pressure (noting that RPM is proportional to fluid level or pressure). The engine throttle may also be adjusted by proportional-integral-derivative (PID) control, based on feedback from one or more fluid level or pressure sensors.

System for Pumping Fluid

In accordance with some embodiments of the present invention, the system may be coupled with one or more containers (e.g., tanks, pits, reservoirs, or the like), which may comprise fluid. In manual mode, a user can drain fluid from a tank, or fill a tank with fluid, by turning the pump engine on using the pump controller. Once the fluid has reached a desired level, the user can turn the pump off using the pump controller. In automatic mode, the pump controller may start the pump engine upon receiving a signal from a fluid sensor. For example, the pump controller system may be coupled with a tank having a float which is connected to the pump controller. In a suction application (i.e., when the pump is configured to drain fluid from the tank), the pump may be turned on once the fluid level within the tank rises to the level (or set point) of the float. In a discharge application (i.e., when the pump is configured to fill the tank with fluid), the pump may be turned on once the fluid level within the tank lowers to the level of the float. The pump engine may then run according to a predefined duration, in which the pump turns off upon expiration of a set time limit, or until the float relay clears.

In some embodiments, the pump controller system may be coupled with a tank having two floats which are connected to the pump controller. The first float may be at a first position (e.g., near the top of the tank) and the second float may be at a second position, below the first float (e.g., near the bottom of the tank). In this configuration, the pump may be turned on by one float and turned off by the other. For example, in a suction application, the pump may be turned on once the fluid level within the tank rises to the level of the first float. The pump engine may then run until the fluid level lowers to the level of the second float.

In certain embodiments, the pump controller system may be coupled with a tank having a fluid level transducer which is connected to the pump controller. The transducer may be positioned at the top of the tank, such that the signal is directed toward the fluid surface. In this configuration, the pump may be turned on and off by the transducer, depending on the predefined set points programmed to the controller by the user. For example, in a suction application, the pump may be turned on once the fluid level within the tank rises to a first set point. The pump engine may then run until the fluid level lowers to a second set point, at which point the controller shuts down the pump. While the pump is running (i.e., while the fluid is between the first and second set points), the engine may be throttled at a constant rate, linear rate, or using PID.

In some embodiments, the pump controller system may be coupled with a tank having a transducer and one or more floats, each of which are connected to the pump controller. In such configurations, the floats may provide the “on/off” signal to the controller, while the transducer provides feedback to the controller to dynamically adjust the pump engine speed. Alternatively, the transducer may provide feedback for the engine throttle, as well as the “on” (“off”) signal to the controller. The “off” (“on”) signal may be provided by a float. It is to be appreciated, however, that the pump controller system may be coupled with one or more tanks which may include any number and combination of floats and transducers (or other types of fluid sensors).

A controller system may include digital and/or analog inputs. These inputs may provide information to the controller about the pump or a fluid tank. For example, a fuel level sensor may allow the user and controller to monitor fuel level and manually, or automatically, shut off the pump when the fuel is nearly depleted. As a protective and safety mechanism, an emergency stop device (“e-stop”) may be coupled with the controller, allowing the user to immediately stop the pump engine by removing power to the controller.

In some aspects, the invention concerns a pump controller for controlling a pump having an engine and an engine controller. In preferred embodiments the pump controller may include: a processor; a memory device for storing processor instructions; a user interface; a pump interface; and a fluid level sensor interface for communication with a fluid level sensor. The pump interface may be used to communicate with the engine controller (for example, and without limitation an engine control unit). The fluid level sensor interface may be used to communicate with a fluid level sensor (for example, and without limitation, a float in a tank). The pump controller may receive, from the fluid level sensor through the fluid sensor interface, an indication of the level of a fluid in a fluid tank. As more fully described herein, the pump controller may interface with a float or other sensor in a tank for determining whether to turn on or off the pump.

In some implementations, a user may interface with the pump controller directly at the pump controller location. For example, and without limitation, the user interface may include one or more touchscreens, buttons, switches, and/or lights. In some implementations, the user may interface with the pump controller from a remote location via wired or wireless connection. For example, and without limitation, the pump controller may include: a transceiver operatively engaged to a computer network; and a remote user device operatively engaged to the computer network. The computer network may be an open or closed network, and may be a cloud based server network on the internet.

The remote user device may be a remote desktop computer, or a wireless computing device (for example, and without limitation, a mobile phone, tablet, or computer). In some implementations, the transceiver may include an antenna for wireless communication (including but not limited to cellular, point-to-point, microwave, short range communication such as near field communication under ISO/IEC standards, or one or more IEEE 802.xx standards, such as “WiFi” or “Bluetooth” communication).

In preferred embodiments, the engine controller is an electronic engine controller (for example, and without limitation, an engine control unit (ECU) or engine control module (ECM)). In some of such embodiments, the pump controller may, through the pump interface, provide instructions to the engine controller and/or receive engine data from the engine controller. In some other embodiments, the engine controller may include a motor and an armature attached to the motor. The armature may engaged and cooperate with a throttle assembly of the engine.

In some implementations, the pump controller may include a pump fluid sensor interface for communication with a pump fluid sensor. The pump controller may receive, from the pump fluid sensor through the pump fluid sensor interface, an indication of the pressure of a fluid in the pump and/or an indication of the flow rate of a fluid in the pump via a fluid pressure sensor and/or a flow rate sensor, respectively. The pump may include a volute (or “wet end” of the pump) and the fluid pressure sensor and/or flow rate sensor may be engaged to a fluid inlet and/or outlet of the volute.

In some implementations, the pump controller may include a fuel sensor interface for communication with a fuel level sensor. The pump controller may receive, from the fuel level sensor through the fuel sensor interface, an indication of the level of fuel in a fuel tank.

In some implementations, the pump controller may include an oil pressure sensor interface for communication with an oil pressure sensor. The pump controller may receive, from the oil pressure sensor through the oil pressure sensor interface, an indication of the pressure of oil in an oil line. The oil line may be one that is engaged with an oil inlet and/or outlet of the engine of the pump.

In some other aspects, the invention concerns a system for pumping a fluid with a pump having a volute, an engine and an electronic engine controller. In some embodiments, the system can include one or more fluid level sensors for detecting a level of the fluid in a fluid tank. The fluid level sensors may be floats and/or transducers.

The transducer for detecting the level of the fluid in a fluid tank may be contact or non-contact level sensors. In some implementations, the transducer may include a non-contact optical or ultrasonic level sensor for determining the distance from the sensor to the level of fluid in the fluid tank. In some implementations, the transducer may include a contact capacitive sensor for determining, much like a float, when the level of fluid in the fluid tank is at the position where the sensor is mounted in the tank. In some implementations, the transducer may include a submersible hydrostatic pressure sensor for determining the hydrostatic pressure on the bottom of the tank, which is reflective of the volume of fluid in the tank.

In some embodiments, the system can also include: a fuel level sensor for detecting a level of fuel in a fuel tank; an inlet oil pressure sensor for detecting an inlet pressure of oil in an inlet oil line associated with the engine; an outlet oil pressure sensor for detecting an outlet pressure of the oil in an outlet oil line associated with the engine; and a pump fluid sensor for detecting a condition of the fluid in the volute of the pump. In some embodiments, the pump fluid sensor may comprise an inlet fluid pressure sensor for detecting an inlet pressure of the fluid in an inlet of the volute of the pump and/or an outlet fluid pressure sensor for detecting an outlet pressure of the fluid in an outlet of the volute of the pump. In some embodiments, the pump fluid sensor may comprise a flow rate sensor for detecting a flow rate of the fluid in the volute of the pump.

The pump controller may be operatively engaged with the engine controller, the fluid level sensors, the fuel level sensor, the inlet oil pressure sensor, the outlet oil pressure sensor, and the pump fluid sensor

In some embodiments, the pump controller may include a processor, a memory device storing processor instructions, and a user interface. The processor instructions, when executed by the processor, may provide instructions to the engine controller. The instructions may be in response to the level of fluid in the fluid tank, the level of the fuel, the inlet pressure of the oil, the outlet pressure of the oil, and the condition of the fluid in the volute.

In some implementations, the user interface may include a touchscreen device. In some implementations, the user interface may include a transceiver and a remote user device. The transceiver and the remote user device may be operatively engaged with a computer network. The transceiver may, in some implementations, may be wireless and include an antenna.

In some other aspects, the invention concerns a system for pumping a fluid. The system may include a first fluid tank for containing the fluid, the first fluid tank having a tank port, and a first fluid level sensor for detecting the level of the fluid in the first fluid tank. The fluid level sensor may include one or more floats or transducers. As above, the transducers may be contact or non-contact level sensors, and may include optical level sensors, ultrasonic level sensors, capacitive sensors, or hydrostatic pressure sensors.

The system may further include a fuel tank and a fuel level sensor for detecting the level of fuel in the fuel tank. The system may further include an inlet and an outlet oil line, and an inlet and outlet oil pressure sensor for detecting a pressure of oil in the oil lines, respectively. The system may further include a first fluid pressure sensor for detecting a first pressure of the fluid and a pump fluid flow rate sensor for detecting a flow rate of the fluid.

In preferred embodiments, the pump may include: a volute having a first port engaged with the tank port of the first fluid tank and also being engaged with the pump fluid flow rate sensor; an engine engaged with the fuel line and the inlet and outlet oil lines; and an engine controller.

In preferred embodiments, the pump controller may be engaged with the engine controller, the first fluid level sensor, the fuel level sensor, the inlet and outlet oil pressure sensors, the first fluid pressure sensor, and the pump fluid flow rate sensor. The pump controller may provide instructions to the engine controller in response to the level of the fluid in the first fluid tank, the level of the fuel in the fuel tank, the pressure of the oil in the inlet oil line, the pressure of the oil in the outlet oil line, the first pressure of the fluid in the pump, the flow rate of the fluid in the pump, and a user interface of the pump controller.

In some embodiments, the system may further include: a second fluid tank for containing the fluid, the second fluid tank comprising a tank port; a second fluid level sensor for detecting the level of the fluid in the second fluid tank; and a second fluid pressure sensor of detecting a second pressure of the fluid. The volute may further include a second port engaged with the tank port of the second fluid tank and the second fluid pressure sensor. The pump controller may further be engaged with the second fluid level sensor and the second fluid pressure sensor, and provide instructions to the engine controller in response to the level of the fluid in the second fluid tank and the second pressure of the fluid in the pump.

In some aspects, the invention concerns a method of controlling a pump having an engine and an electronic controller. In preferred embodiments, the method may include the steps of: characterizing the operation of a pump; performing a safety check of the pump; determining a level of a fluid in a fluid tank; and providing instructions to the electronic controller. The method may further include the step of determining a target speed of the pump. The method may further include the step of charging a battery.

In preferred embodiments, characterization of the pump may include the steps of: providing instructions to the electronic engine controller to cause the engine to rotate at a first characterization speed; and, while the engine is rotating at the first characterization speed, detecting a first pump condition of the pump. Detecting the first pump condition may include the steps of detecting an inlet fluid pressure of the fluid at a fluid inlet of a volute of the pump and/or detecting an outlet fluid pressure of the fluid at a fluid outlet of the volute of the pump. Detecting the first pump condition may include the step of detecting a flow rate of the fluid in the volute of the pump.

In some embodiments, characterization of the pump may further include the steps of: providing instructions to the electronic engine controller to cause the engine to rotate at a second characterization speed; and, while the engine is rotating at the second characterization speed, detecting a second pump condition of the pump. Detecting the second pump condition may include the steps of detecting the inlet and/or outlet fluid pressures of the volute. Detecting the second pump condition may include the step of detecting a flow rate of the fluid in the volute of the pump.

The instructions may be provided to the electronic engine controller by a pump controller having a processor, a memory device storing processor instructions thereon, and a user interface. The instructions may cause the engine to rotate at a target speed. In preferred embodiments, the target may be determined from the level of the fluid in the tank, the first characterization speed, the first pump condition, the second characterization speed, and the second pump condition.

In preferred embodiments, the safety check may include the steps of: detecting a pressure of oil in an inlet oil line engaged with the engine; detecting a pressure of oil in an outlet oil line engaged with the engine; and detecting the level of fuel in a fuel tank. In some embodiments, the safety check may include the step of receiving an engine condition of the engine from the electronic engine controller. The engine condition could be one or more of the engine block temperature, a torque of the engine, a temperature of the oil in the engine, a pressure of the oil in the engine, a pressure of a coolant in the engine, a temperature of the coolant in the engine, a temperature of a fuel, an indication of the amount of the fuel that has been used, an indication of the rate at which the fuel is used, a temperature of an inlet air at an air inlet of the engine, a pressure of the inlet air, a temperature of an outlet air at an air outlet of the engine, a pressure of the outlet air, a temperature of air at an exhaust of the engine, the running hours of the engine, the total hours of the engine, and a fault code.

In some embodiments, the battery may be charged by the steps of: determining whether the battery needs to be charged; opening a volute of the pump; and providing instructions to the electronic engine controller, the instructions causing the engine to rotate at a charging speed for a charging time.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a diagram illustrating an exemplary pump controller in accordance with some embodiments of the present invention.

FIG. 2 is a diagram illustrating an exemplary system for controlling a pump in accordance with some embodiments of the present invention.

FIG. 3 is a diagram illustrating an exemplary menu on a pump controller display in accordance with some embodiments of the present invention.

FIG. 4 is a diagram illustrating exemplary engine data on a pump controller display in accordance with some embodiments of the present invention.

FIG. 5 is a diagram illustrating an exemplary job setup interface on a pump controller display in accordance with some embodiments of the present invention.

FIG. 6 is a diagram illustrating an exemplary job configuration interface on a pump controller display in accordance with some embodiments of the present invention.

FIG. 7 is a diagram illustrating an exemplary engine startup interface on a pump controller display in accordance with some embodiments of the present invention.

FIG. 8 is a diagram illustrating exemplary diagnostics data on a pump controller display in accordance with some embodiments of the present invention.

FIG. 9 is a diagram illustrating an implementation of an exemplary system for pumping a fluid in accordance with some embodiments of the present invention.

FIG. 10 is a diagram illustrating an implementation of an exemplary system for pumping a fluid in accordance with some embodiments of the present invention.

FIG. 11 is a diagram illustrating an implementation of an exemplary system for pumping a fluid in accordance with some embodiments of the present invention.

FIG. 12 is a diagram illustrating an implementation of an exemplary system for pumping a fluid in accordance with some embodiments of the present invention.

FIG. 13 is a diagram illustrating an implementation of an exemplary system for pumping a fluid in accordance with some embodiments of the present invention.

FIG. 14 is a diagram illustrating an implementation of an exemplary system for pumping a fluid in accordance with some embodiments of the present invention.

FIG. 15 is a diagram illustrating an implementation of an exemplary system for pumping a fluid in accordance with some embodiments of the present invention.

FIG. 16 is a diagram illustrating an implementation of an exemplary system for pumping a fluid in accordance with some embodiments of the present invention.

FIG. 17 is a diagram illustrating an implementation of an exemplary system for pumping a fluid in accordance with some embodiments of the present invention.

FIG. 18 is a diagram illustrating an implementation of an exemplary system for pumping a fluid in accordance with some embodiments of the present invention.

FIG. 19 is a flowchart illustrating an exemplary process for characterizing the operation of a pump in accordance with some embodiments of the present invention.

FIG. 20 is a flowchart illustrating an exemplary process for setting an operational mode of a pump in accordance with some embodiments of the present invention.

FIG. 21 is a flowchart illustrating an exemplary process for implementing a password authentication procedure in accordance with some embodiments of the present invention.

FIG. 22 is a flowchart illustrating an exemplary process for setting a startup timer for a pump in accordance with some embodiments of the present invention.

FIG. 23 is a flowchart illustrating an exemplary process for executing the manual mode startup sequence pump in accordance with some embodiments of the present invention.

FIG. 24 is a flowchart illustrating an exemplary process for starting a pump engine in manual mode in accordance with some embodiments of the present invention.

FIG. 25 is a flowchart illustrating an exemplary process for executing the automatic mode startup sequence in accordance with some embodiments of the present invention.

FIG. 26 is a flowchart illustrating an exemplary process for executing the automatic mode shutdown sequence in accordance with some embodiments of the present invention.

FIG. 27 is a flowchart illustrating an exemplary process for executing the manual mode program in accordance with some embodiments of the present invention.

FIG. 28 is a flowchart illustrating an exemplary process for adjusting maximum and minimum engine speeds of a pump in accordance with some embodiments of the present invention.

FIG. 29 is a flowchart illustrating an exemplary process for executing automatic mode with a float system in accordance with some embodiments of the present invention.

FIG. 30 is a flowchart illustrating an exemplary process for executing the manual multi-state operation mode in accordance with some embodiments of the present invention.

FIG. 31 is a flowchart illustrating an exemplary process for executing the warm up and cool down procedure of a pump controller in accordance with some embodiments of the present invention.

FIG. 32 is a flowchart illustrating an exemplary process for executing the automatic mode program of a pump controller, with transducers, in accordance with some embodiments of the present invention.

FIG. 33 is a flowchart illustrating an exemplary process for configuring analog input, scaling, and unit data of pump controller in accordance with some embodiments of the present invention.

FIG. 34 is a flowchart illustrating an exemplary process for executing the automatic mode program of a pump controller, with a float and transducer, in accordance with some embodiments of the present invention.

FIG. 35 is a flowchart illustrating an exemplary process for executing the automatic mode program of a pump controller, using PID target control, in accordance with some embodiments of the present invention.

FIG. 36 is a flowchart illustrating an exemplary process for setting PID parameters for a pump controller in accordance with some embodiments of the present invention.

FIG. 37 is a flowchart illustrating an exemplary process for setting a pump scheduler program of a pump controller in accordance with some embodiments of the present invention.

FIGS. 38A-38AA are diagrams illustrating various exemplary interfaces for viewing, running, or editing operational modes, programs, menus, parameters, and data related to a pump controller, a pump, and various input sensors, which may displayed on the pump controller user interface display, in accordance with some embodiments of the present invention.

DETAILED DESCRIPTION OF THE INVENTION

The invention, in its various aspects, will be explained in greater detail below. While the invention will be described in conjunction with several exemplary embodiments, the exemplary embodiments themselves do not limit the scope of the invention. Similarly, the exemplary illustrations in the accompanying drawings, where like elements have like numerals, do not limit the scope of the exemplary embodiments and/or invention, including any length, angles, or other measurements provided. Rather the invention, as defined by the claims, may cover alternatives, modifications, and/or equivalents of the exemplary embodiments.

The present invention generally concerns a pump controller for controlling a pump, as well as systems, methods, and software for controlling a pump and for pumping a fluid. In some embodiments, the pump controller may include one or more interfaces, ports, devices, or processors by which a user may operate the controller and by which the controller operates, or communicates with, connected devices. More specifically, the controller may include a processor, a memory device for storing processor instructions, a user interface, a pump interface, and a fluid sensor interface. For example, as illustrated in FIG. 1, pump controller 100 may include one or more lights 110, pump interface 121, fluid level sensor interface 122, fuel level sensor interface 123, oil pressure sensor interface 124, fluid pressure sensor interface 125, transceiver 130 having antenna 131, user interface 140 (with display 141, one or more switches 142, and knob 143), processor 150, and memory device 160 for storing processor 150 instructions, and battery 170.

As part of the user interface, lights 110 may provide information to a user about the current status or condition of controller 100, or any of its connected devices, based on the current state of light(s) 110 (i.e., on or off, emitted color). For example, and without limitation, if light 110 is on and emitting a red color, it may indicate an issue with a connection between pump controller 100 and a fluid sensor. It is to be appreciated, however, that a pump controller can include any number of lights, or other audio or visual devices such as, but not limited to, a horn, which may serve as status indicators or warnings related to the pump controller or its connected devices.

In some embodiments, a pump controller may be adapted to communicate with an electronic engine controller of a pump. For example, pump controller 100 can exchange information with a pump by means of pump interface 121 in order to power, operate, or otherwise control the pump. Through this interface, pump controller 100 can provide instructions to the electronic engine controller in order to start, stop, or adjust the throttle of the pump engine. In some embodiments, the pump controller may be adapted to communicate with an engine controller of a pump which may have an armature engaged with the throttle of the pump engine.

In accordance with some embodiments of the present invention, the pump controller can also be coupled with one or more fluid sensors, which may provide feedback to the pump controller regarding fluid level or fluid pressure. For example, controller 100 may be adapted to exchange information with a fluid level sensor by means of fluid level sensor interface 122. The fluid level sensor may provide feedback to controller 100, which, depending on the signal, may cause controller 100 to turn the pump on or off, or to adjust the speed of the pump engine. In some embodiments, the pump controller may be connected to one or more floats which serve as feedback mechanisms for determining when, or at what fluid level within a fluid tank, the pump engine is to be turned on and off. The controller may also be connected to one or more transducers, which, for example, can provide readings of a fluid level or pressure. In certain embodiments, a transducer may serve as a feedback mechanism for determining the levels at which the pump engine is turned on and off. Additionally, feedback from a transducer can be used to determine throttle adjustment of the pump engine by the pump controller, thereby adjusting the speed of the pump.

In some embodiments, a pump controller may also be adapted for remote operation. As further illustrated in FIG. 1, pump controller 100 may be operatively engaged, via transceiver 130, with computer network 900, to which remote user device 800 may also be operatively engaged. Through computer network 900, a user may operate pump controller 100 remotely via remote user device 800. In certain embodiments, a remote user device may include a smartphone, tablet, or laptop, or the like.

According to some embodiments of the present invention, the user interface may include a display, buttons, switches, and/or knobs, which may provide a means by which the user can turn on (or off) the controller, toggle between modes, enter data, or otherwise operate the controller. For example, controller 100 may include display 141, one or more switches 142, and knob 143. Switches 142 and knob 143 may be used to select an option or field shown on display 141. Switches 142 and knob 143 may also be used to send a command to a connected pump, such as initiating the startup sequence to the pump engine.

According to some embodiments of the present invention, a pump controller may be adapted to characterize a pump, which may provide a user with information pertaining to the health of the pump. For example, pump controller 100 may be further adapted to receive pump engine data from the engine controller by means of pump interface 121. In certain embodiments, a pump controller may also include fuel sensor and/or oil pressure sensor interfaces, through which the controller can communicate with a fuel level sensor and oil pressure sensor, respectively. A fuel level sensor may be used to measure the level of fuel within a fuel tank associated with the pump engine. An oil pressure sensor may be used to measure pressure within oil lines engaged with the oil inlet and/or outlet of the pump engine.

In some embodiments, the pump controller may be adapted to automatically charge a pump battery. For example, pump controller 100 can receive information about battery 240 of pump 200 through pump interface 121. Pump controller 100 can then determine if the voltage of battery 240 is low and if it needs charging. If battery 240 requires charging, pump controller 100 can turn on and run pump engine 220 at a predefined charge speed for a predefined duration of time. Once the set runtime expires, the pump controller will shut down the engine.

Pump controller 100 may also be adapted to receive data from one or more fluid sensors associated with a pump volute and connected via pump fluid sensor interface 125. For example, fluid pressure sensors and/or fluid flow meters may be provided to measure fluid pressure or fluid flow, respectively, through an inlet or outlet of the pump volute. It is to be appreciated that the pump controller may be adapted to receive a wide variety of information regarding the status of a pump (e.g., oil pressure, fluid flow, fuel level, coolant temperature, voltage, etc.). This information can be used to protect and maintain pump health, either by built-in mechanisms within the pump controller, or by user action. For example, the pump controller may determine, by volute inlet and outlet flow rates measured by flow meters, that the pump is undergoing cavitation. In response, the pump controller may automatically shut down the pump engine. Alternatively, the user may determine, based on the pump data, to manually shut down the engine. In such cases, a pump controller may be coupled with an emergency stop switch to immediately cut power to the controller and, thus, pump engine. In some cases, the pump data may be indicative of worn out or malfunctioning pump parts, which allows the user to determine if and when a part should be replaced—thus extending the life of the pump.

A pump controller can interface with a number of devices and sensors to form a system network for controlling a pump. The pump controller may act as the central processor, receiving signals from one or more sensors and, based on sensor feedback or user input, providing commands to a pump. For example, as illustrated in FIG. 2, system 5 may comprise: pump controller 100; pump 200 having engine control unit 210, engine 220, and volute 230; one or more fluid level sensors 300; one or more fuel level sensors 400; one or more oil pressure sensors 500; one or more fluid pressure sensors 600; and remote user device 800. Within system 5, information from pump 200, fluid level sensors 300, fuel level sensors 400, oil pressure sensors 500, and pump fluid sensors 600, may be received and processed by controller 100. Controller 100 may then transmit signals and commands to pump 200 to, for example, turn off or on, run in manual or automatic mode, and/or adjust engine speed. As previously mentioned, system 5 may further include a wireless or wired connection to remote user device 800, allowing a user to remotely, or externally, access and operate the pump controller from remote user device 800.

A pump controller may include one or more programs, or primary modes of operation. For example, as illustrated in FIG. 3, a pump controller may include diagnostics mode, automatic mode, manual mode, and configuration mode. Prior to operation, a user may configure the controller for use with a pump by selecting configuration mode on the user interface display, or by connecting an external user device, such as a laptop, to the pump controller. On the user interface, or user device, the user may enter characterization parameters for the connected devices, as well as operational parameters. For example, as illustrated in FIG. 4, the user may enter pump engine data, such as absolute max speed, idle speed, prime speed, prime duration, etc. The user can also toggle between options, such as when specifying whether or not to enable a “low fuel shutdown” option (controller shuts down pump when fuel level is low). Once the user has configured the pump controller with the required pump engine data, the user may operate the pump in manual mode.

Before the user can operate the pump in automatic mode, the user may configure connected sensors and specify the job type and operational parameters. For example, as illustrated in FIG. 5, the user may specify the job type (i.e., drain or fill), the engine start/stop method, and the engine throttle control type (i.e., single speed, linear control, or PID control). The user may also have the option of specifying whether the connected pump is an agricultural pump and whether or not the pump is being used in a flooded suction (drain) application.

To use the pump with one or more fluid sensors, the user may also enter fluid sensor information through configuration mode. For example, the user can set parameters related to a connected float and/or a connected transducer, as shown in FIG. 6. The user may specify whether a float has a normally open (“N/O”) or a normally closed (“N/C”) circuit. Furthermore, the user may also specify transducer information such as displayed units, maximum and minimum RPM (engine speed limits during operation), fluid set point levels (i.e., levels at which the pump turns on or off), and the PID target (i.e., transducer target set point when in PID submode). Once the controller is properly configured, the user may run the controller in automatic mode.

In manual mode, the pump engine may be started by pressing a button or switch on the user interface. As shown in FIG. 7, the user may press the engine start button for a number of seconds, as preconfigured or defined by the user. Upon expiration of the specified duration, the pump controller may attempt to start the pump engine. Once started, the pump engine will run at the speed set by default or as configured by the user. During any time while the pump is running, the user may adjust the pump engine throttle by modifying the RPM value displayed on the user interface. To shut down the pump engine, the user may press a corresponding button on the pump controller or on the display.

In automatic mode, the pump engine may be started by the pump controller via a signal from a fluid sensor. For example, a connected float may be tripped by a fluid, or a connected transducer may detect that the fluid has reached a predefined set point, causing the pump controller to attempt to start the pump engine. If the pump engine does not start after a predefined maximum number of attempts, the start sequence may be aborted. Once the pump engine is running, the pump may operate on either: a fixed throttle (single speed), based on the speed set by the user during configuration; linear throttling, based on predefined parameters and feedback from a transducer; or PID throttling, based one predefined parameters and feedback from a transducer.

In the case of a malfunction, poor performance, or other general issues, or if a user wants to obtain real-time information about the pump and connected devices, the user can enter diagnostics mode. As shown in FIG. 8, in diagnostics mode, the user can view pump engine data such as torque, load, oil pressure, coolant temperature, fuel information, etc. The user can also view inlet and outlet pressures of the pump volute, transducer feedback, and float status. Further exemplary information displayed on a pump controller user interface can be seen in FIGS. 38A-AA.

A pump controller and a pump, in accordance with some embodiments of the present invention, may be coupled with one or more tanks, which may comprise fluid, for the purpose of pumping fluid into or out of a tank. In certain embodiments, a pump controller may be coupled with a pump connected to a single tank. In a suction (drain) application, an inlet of the pump may be engaged with an outlet of the tank. In a fill (discharge) application, an outlet of the pump may be engaged with an inlet of the tank. In other embodiments, the pump may be connected to two tanks—one tank engaged with the pump inlet and the other tank engaged with the pump outlet. In such embodiments, fluid may be transferred between tanks when the pump is on (i.e., one tank drains, while the other tank fills). In manual mode, a user can drain fluid from a tank, or fill a tank with fluid, by turning the pump engine on using the pump controller. Once the fluid reaches a desired level, the user can turn the pump off using the pump controller.

In automatic mode, the pump controller may start the pump engine upon receiving a signal from a fluid sensor. In some embodiments, the pump controller and pump may be coupled with a tank having a float connected to the pump controller. In a suction application, the pump may be turned on once the fluid level within the tank rises to the level of the float and activates it. In a discharge application, the pump may be turned on once the fluid level within the tank lowers to the level of the float and activates it. If the float circuit is normally open, then the float is considered activated when the float circuit closes. If the float circuit is normally closed, then the float is considered activated when the float circuit opens. The pump engine may then run according to a predefined duration, in which the pump turns off upon expiration of a set time limit, or until the float circuit closes (or opens). In preferred embodiments, a float may include a hysteresis function to delay the closing of the float circuit. In certain embodiments, a float may have an activated range—that is, once activated, the float may stay activated until the fluid level rises above or lowers below the activated range. In this case, the pump may turn off after a fixed increase or decrease in fluid levels.

In some embodiments, the pump controller and pump can be coupled with a tank having a transducer which is connected to the pump controller. The transducer may be positioned at the top of the tank, such that the signal is directed toward the fluid surface, or, alternatively, the transducer may be positioned near the bottom of the tank, submerged in a fluid. In this configuration, the pump may be turned on and off by the transducer, depending on the predefined set points programmed to the controller by the user. For example, in a suction application, the pump may be turned on once the fluid level within the tank rises to a first set point. The pump engine may then run until the fluid level lowers to a second set point, at which point the controller shuts down the pump.

A transducer can also be in used in controlling the pump engine throttle while the pump is running (i.e., while the fluid is between the first and second set points). In a linear application, the pump controller calculates the engine throttle based on a linear correlation between a fluid level and pump engine RPM. To perform this calculation, the pump controller uses the ratios of the high fluid level set point to the low fluid level set point, and the maximum pump engine RPM to the minimum pump engine RPM (these parameters are predefined by the user). In a PID application, the pump controller uses feedback from the transducer and uses PID to calculate throttle adjustment based on the target transducer value (e.g., fluid level).

In some embodiments, the pump controller and pump may be coupled with a tank having one or more transducers and one or more floats, each of which are connected to the pump controller. In such configurations, a float may provide the “on/off” signal to the controller, while a transducer may provide feedback to the controller to adjust the pump engine speed. Alternatively, a transducer may provide feedback for the engine throttle, as well as the “on” (“off”) signal to the controller and the “off” (“on”) signal may be provided by a float. In certain embodiments, the tank may have two or more transducers and no floats, where a first transducer provides the “on/off” signal and a second transducer provides feedback to the pump controller. It is to be appreciated, however, that a pump controller and pump may be coupled with one or more tanks which may include any number and combination of floats and transducers (or other types of fluid sensors).

Referring, generally, to FIGS. 9-18, exemplary implementations of a fluid pumping system are illustrated, in which pump controller 100 is coupled with pump 200 and one or more floats and/or transducers. Pump 200 may be turned on by pump controller 100 upon receiving a signal from a float or transducer. In s suction application (FIGS. 9, 11, 13, 15, and 17), pump 200 is connected to tank 700 on the outlet side thereof. When pump 200 is running, fluid is drawn out of tank 700 through tank outlet 780 and drawn into the pump through volute inlet 231. The fluid is then discharged from pump 200 through volute outlet 232. In a discharge (fill) application (FIGS. 10, 12, 14, 16, and 18), pump 200 is connected to tank 700 on the inlet side thereof. When pump 200 is running, fluid is drawn in through volute inlet 231 and discharged through volute outlet 232. The discharged fluid then flows into tank 700 through tank inlet 720. The exemplary fluid pumping systems described below include: a single float system (FIGS. 9-10); a dual float system (FIGS. 11-12); a single transducer system (FIGS. 13-14); a single transducer and single float system (FIGS. 15-16); and a single transducer and dual float system (FIGS. 17-18).

Single Float Pumping System—Suction

Referring now to FIG. 9, in a first implementation, pump controller 100 and pump 200 may be coupled with tank 700 for the purpose of draining fluid therefrom. Tank 700 has a float 311A near the top 710 of tank 700 at a depth 740A. Pump controller 100 starts the engine of pump 200 when the fluid level rises to depth 740A and activates float 311A. Pump 200 runs until the fluid level lowers below depth 740A and deactivates float 311A. Pump 200 continues to run for a predefined duration of time and shuts down upon expiration thereof.

To execute the above-described implementation, a user must turn on pump controller 100 and properly configure the controller for a single float suction program prior to use. Afterwards, the user selects automatic mode via the user interface to initiate the program. Once the fluid level within tank 700 rises to the level of float 311A, the circuit of float 311A becomes activated (circuit closes if float circuit is normally open; circuit opens if float circuit is normally closed). Upon activation, a signal is sent to, and processed by, pump controller 100. As a result, pump controller 100 sends a signal to pump 200 to start the engine of pump 200. Once pump 200 is running, the engine runs at a single speed predefined by the user through configuration mode of pump controller 100. As the fluid level lowers below the level of float 311A, the circuit becomes deactivated (circuit re-opens if float circuit is normally open; circuit re-closes if float circuit is normally closed). Pump controller 100 then sends a signal to pump 200 to continue to run at the predefined engine speed for a predefined duration. The predefined duration is set by the user in configuration mode of pump controller 100 by specifying the amount of time the engine runs after float 311A is deactivated. Once this time period expires, pump controller 100 sends a signal to pump 200 to shut down the engine.

Single Float Pumping System—Discharge

Referring now to FIG. 10, in a second implementation, pump controller 100 and pump 200 may be coupled with tank 700 for the purpose of filling tank 700 with fluid. Tank 700 has a float 313B near the bottom 790 of tank 700 at depth 741. Pump controller 100 starts the pump engine of pump 200 when the fluid level lowers to depth 741 and activates float 313B. Pump 200 runs until the fluid level rises above depth 760B and deactivates float 313B. Pump 200 continues to run for a predefined duration of time and shuts down upon expiration thereof.

To execute the above-described implementation, a user must turn on pump controller 100 and properly configure the controller for a single float discharge (drain) program prior to use. Afterwards, the user selects automatic mode via the user interface to initiate the program. Once the fluid level within tank 700 lowers to the level of float 313B, the circuit of float 313B becomes activated (circuit closes if float circuit is normally open; circuit opens if float circuit is normally closed). Upon activation, a signal is sent to, and processed by, pump controller 100. As a result, pump controller 100 sends a signal to pump 200 to start the engine of pump 200. Once pump 200 is running, the engine runs at a single speed predefined by the user through configuration mode of pump controller 100. As the fluid level rises above the level of float 313B, the circuit becomes deactivated (circuit re-opens if float circuit is normally open; circuit re-closes if float circuit is normally closed). Pump controller 100 then sends a signal to pump 200 to continue to run at the predefined engine speed for a predefined duration. The predefined duration is set by the user in configuration mode of pump controller 100 by specifying the amount of time the engine runs after float 313B is deactivated. Once this time period expires, pump controller 100 sends a signal to pump 200 to shut down the engine.

Dual Float Pumping System—Suction

Referring now to FIG. 11, in a third implementation, pump controller 100 and pump 200 may be coupled with tank 700 for the purpose of draining fluid therefrom. Tank 700 has a float 311C, near the top 710 of tank 700 at depth 740C, and a float 313C is near the bottom 790 of tank 700 at depth 760C. Pump controller 100 starts the pump engine of pump 200 when the fluid level rises to depth 740C, activating floats 311C and 313C. Pump 200 continues to run until the fluid level lowers below depth 760C, deactivating float 313C.

To execute the above-described implementation, a user must turn on pump controller 100 and properly configure the controller for a dual float suction program prior to use. Afterwards, the user selects automatic mode via the user interface to initiate the program. Once the fluid level within tank 700 rises to the level of float 311C at depth 700C, both the circuit of float 311C and the circuit of float 313C are activated (circuit closes if float circuit is normally open; circuit opens if float circuit is normally closed). Once floats 311C and 313C are activated, a signal is sent to, and processed by, pump controller 100. As a result, pump controller 100 sends a signal to pump 200 to start the engine of pump 200. Once pump 200 is running, the engine runs at a single speed predefined by the user through configuration mode of pump controller 100. As the fluid level lowers below the level of float 311C, the circuit becomes deactivated (circuit re-opens if float circuit is normally open; circuit re-closes if float circuit is normally closed). Pump 200 continues to run until the fluid level lowers below the level of float 313C, deactivating the circuit. Pump controller 100 then sends a signal to pump 200 to shut down the engine.

Dual Float Pumping System—Discharge

Referring now to FIG. 12, in a fourth implementation, pump controller 100 and pump 200 may be coupled with tank 700 for the purpose of filling tank 700 with a fluid. Tank 700 has a float 311D, near the top 710 of tank 700 at depth 740D, and a float 313B near the bottom 790 of tank 700 at depth 760D. Pump controller 100 starts the pump engine of pump 200 when the fluid level lowers to depth 760D and deactivates floats 311D and 313D. Pump 200 continues to run until the fluid level rises to depth 740D, activating float 311D.

To execute the above-described implementation, a user must turn on pump controller 100 and properly configure the controller for a dual float discharge program prior to use. Afterwards, the user selects automatic mode via the user interface to initiate the program. Once the fluid level within tank 700 lowers to below depth 760D, below floats 311D and 313D, both the circuit of float 311D and the circuit of float 313D are deactivated (circuit opens if float circuit is normally open; circuit closes if float circuit is normally closed). Once floats 311D and 313D are deactivated, a signal is sent to, and processed by, pump controller 100. As a result, pump controller 100 sends a signal to pump 200 to start the engine of pump 200. Once pump 200 is running, the engine runs at a single speed predefined by the user through configuration mode of pump controller 100. As the fluid level rises above float 313D to the level of float 311D at depth 740D, the circuits of floats 311D and 313D become activated (circuit closes if float circuit is normally open; circuit opens if float circuit is normally closed). Once float 311D is activated, pump controller 100 sends a signal to pump 200 to shut down the engine.

Single Transducer Pumping System—Suction

Referring now to FIG. 13, in a fifth implementation, pump controller 100 and pump 200 may be coupled with tank 700 for the purpose of draining fluid therefrom. Tank 700 has a transducer 320E, at the top 710 of tank 700. Pump controller 100 starts the pump engine of pump 200 when the fluid level exceeds high setpoint 745E. Pump 200 continues to run until the fluid level lowers to low setpoint 765E.

To execute the above-described implementation, a user must turn on pump controller 100 and properly configure the controller for a transducer feedback suction program prior to use. If engine throttling is desired, the user must also configure the controller for linear and PID throttling submodes. Afterwards, the user selects automatic mode via the user interface to initiate the program. While the program is running, transducer 320E provides feedback to pump controller 100 as to the value of the fluid level (measured from transducer 320E to the fluid surface). Once the fluid level within tank 700 rises to a point where transducer 320E detects that the fluid level is above high setpoint 745E, a signal is sent to, and processed by, pump controller 100 to start the pump engine. If the user has set the engine throttle to a single speed, the engine of pump 200 will run at a single speed until transducer 320E detects that the fluid level has reached low setpoint 765E. At this point, based on the feedback from transducer 320E, pump controller 100 sends a signal to pump 200 to shut down.

If instead, the user is running the program with a linear throttling submode, the speed of the engine of pump 200 will decrease, linearly, as the fluid lowers from high setpoint 745E to low setpoint 765E. For example, if the fluid is at depth 750E, pump controller 200 determines the instantaneous fluid level from transducer 320E and then uses this value to calculate the engine throttle adjustment, based on the high setpoint and low setpoint, and the maximum and minimum speeds of the engine (predefined by the user). As the fluid level continues to lower, pump controller 100 continues to adjust the engine throttle in predefined time or distance increments until transducer 320E detects that the fluid level has reached low setpoint 765E. At this point, based on feedback from transducer 320E, pump controller 100 sends a signal to pump 200 to shut down.

Alternatively, if the user is running the program with a PID throttling submode, the speed of the engine of pump 200 will be determined by a PID algorithm. For example, if the PID setpoint is set to a fluid level corresponding to depth 750E, pump controller 100 will send a signal to pump 200 to decrease the engine speed if transducer 320E detects that the fluid level is below depth 750E. If transducer 320E detects that the fluid level is above depth 750E, pump controller 200 will send a signal to pump 200 to increase the engine speed. Pump 200 will continue to run as long as the fluid level is above the low setpoint.

Single Transducer Pumping System—Discharge

Referring now to FIG. 14, in a sixth implementation, pump controller 100 and pump 200 may be coupled with tank 700 for the purpose of filling tank 700 with a fluid. Tank 700 has a transducer 320F, at the top 710 of tank 700. Pump controller 100 starts the pump engine of pump 200 when the fluid level drops below low setpoint 765F. Pump 200 continues to run until the fluid level rises to high setpoint 745F.

To execute the above-described implementation, a user must turn on pump controller 100 and properly configure the controller for a transducer feedback discharge program prior to use. If engine throttling is desired, the user must also configure the controller for linear and PID throttling submodes. Afterwards, the user selects automatic mode via the user interface to initiate the program. While the program is running, transducer 320F provides feedback to pump controller 100 as to the value of the fluid level (measured from transducer 320F to the fluid surface). Once the fluid level within tank 700 lowers to a point where transducer 320F detects that the fluid level is below low setpoint 765F, a signal is sent to, and processed by, pump controller 100 to start the pump engine. If the user has set the engine throttle to a single speed, the engine of pump 200 will run at a single speed until transducer 320F detects that the fluid level has reached high setpoint 745F. At this point, based on the feedback from transducer 320F, pump controller 100 sends a signal to pump 200 to shut down.

If instead, the user is running the program with a linear throttling submode, the speed of the engine of pump 200 will decrease, linearly, as the fluid rises from low setpoint 765F to high setpoint 745F. For example, if the fluid is at depth 750F, pump controller 100 determines the instantaneous fluid level from transducer 320F and then uses this value to calculate the engine throttle adjustment, based on the high setpoint, the low setpoint, and the maximum and minimum speeds of the engine (predefined by the user). As the fluid level continues to rise, pump controller 100 continues to adjust the engine throttle in predefined time or distance increments until transducer 320F detects that the fluid level has reached high setpoint 745F. At this point, based on feedback from transducer 320F, pump controller 100 sends a signal to pump 200 to shut down.

Alternatively, if the user is running the program with a PID throttling submode, the speed of the engine of pump 200 will be determined by a PID algorithm. For example, if the PID setpoint is set to value corresponding to depth 750F, pump controller 100 will send a signal to pump 200 to increase the engine speed (calculated via the PID algorithm) if transducer 320F detects that the fluid level is below depth 750F. If transducer 320F detects that the fluid level is above depth 750F, pump controller 100 will send a signal to pump 200 to decrease the engine speed. Pump 200 will continue to run as long as the fluid level is below the high setpoint.

Single Transducer and Float Pumping System—Suction

Referring now to FIG. 15, in a seventh implementation, pump controller 100 and pump 200 may be coupled with tank 700 for the purpose of draining fluid therefrom. Tank 700 has a transducer 320G, at the top 710 of tank 700, and a float 314 near the top 710 of tank 700 at depth 740G. Pump controller 100 starts the pump engine of pump 200 when the fluid level rises to depth 740G and activates float 311G. The speed of engine of pump 200 is adjusted at a linear rate, or according a PID algorithm, depending on the submode. Pump 200 continues to run until the float 311G is deactivated.

To execute the above-described implementation, a user must turn on pump controller 100 and properly configure the controller for a transducer feedback suction program prior to use. The user must also configure the controller for linear or PID throttling submodes. Afterwards, the user selects automatic mode via the user interface to initiate the program. While the program is running, transducer 320G provides feedback to pump controller 100 as to the value of the fluid level (measured from transducer 320G to the fluid surface). When the fluid level reaches depth 740G, the circuit of float 311G becomes activated (circuit closes if float circuit is normally open; circuit opens if float circuit is normally closed). Upon activation, a signal is sent to, and processed by, pump controller 100. As a result, pump controller 100 sends a signal to pump 200 to start the engine of pump 200. Once pump 200 is running, the engine speed is adjusted at a linear rate (if set to linear throttle submode) based on high and low setpoints, and maximum and minimum engine speeds (analogous to the procedure described previously). As the fluid level lowers below the level of float 311G, the circuit becomes deactivated (circuit re-opens if float circuit is normally open; circuit re-closes if float circuit is normally closed). Pump controller 100 then sends a signal to pump 200 to shut down.

Alternatively, if the user is running the program with a PID throttling submode, the speed of the engine of pump 200 will be determined by a PID algorithm. For example, if the PID setpoint is set to depth 750G, pump controller 100 will send a signal to pump 200 to decrease the engine speed if transducer 320G detects that the fluid level is below depth 750G. If transducer 320G detects that the fluid level is above depth 750G, pump controller 200 will send a signal to pump 200 to increase the engine speed. Pump 200 will continue to run as long as float 311G is activated.

Single Transducer and Float Pumping System—Discharge

Referring now to FIG. 16, in an eighth implementation, pump controller 100 and pump 200 may be coupled with tank 700 for the purpose of filling tank 700 with a fluid. Tank 700 has a transducer 320H, at the top 710 of tank 700, and a float 315 near the bottom 790 of tank 700 at depth 760H. Pump controller 100 starts the pump engine of pump 200 when the fluid level lowers to depth 760H and deactivates float 313H. The speed of engine of pump 200 is adjusted at a linear rate, or according a PID algorithm, depending on the submode, based on feedback from transducer 320H. Pump 200 continues to run until the float 313H is activated.

To execute the above-described implementation, a user must turn on pump controller 100 and properly configure the controller for a transducer feedback suction program prior to use. The user must also configure the controller for linear or PID throttling submodes. Afterwards, the user selects automatic mode via the user interface to initiate the program. While the program is running, transducer 320H provides feedback to pump controller 100 as to the value of the fluid level (measured from transducer 320H to the fluid surface). When the fluid level reaches depth 760H, the circuit of float 313H becomes deactivated (circuit opens if float circuit is normally open; circuit closes if float circuit is normally closed). Upon activation, a signal is sent to, and processed by, pump controller 100. As a result, pump controller 100 sends a signal to pump 200 to start the engine of pump 200. Once pump 200 is running, the engine speed is adjusted at a linear rate (if set to linear throttle submode) based on high and low setpoints, and maximum and minimum engine speeds (analogous to the procedure described previously). As the fluid level rises above the level of float 313H, the circuit becomes activated (circuit closes if float circuit is normally open; circuit opens if float circuit is normally closed). Pump controller 100 then sends a signal to pump 200 to shut down.

Alternatively, if the user is running the program with a PID throttling submode, the speed of the engine of pump 200 will be determined by a PID algorithm. For example, if the PID setpoint is set to depth 750H, pump controller 100 will send a signal to pump 200 to decrease the engine speed if transducer 320H detects that the fluid level is above depth 750H. If transducer 320H detects that the fluid level is below depth 750H, pump controller 100 will send a signal to pump 200 to increase the engine speed. Pump 200 will continue to run as long as float 313H is deactivated.

Single Transducer and Dual Float Pumping System—Suction

Referring now to FIG. 17, in a ninth implementation, pump controller 100 and pump 200 may be coupled with tank 700 for the purpose of draining fluid therefrom. Tank 700 has a transducer 320I at the top 710 of tank 700, a first float 316A near the top 710 of tank 700 at depth 740I, and a second float 313I near the bottom 790 of tank 700 at depth 760I. Pump controller 100 starts the pump engine of pump 200 when the fluid level rises to depth 740I, activating floats 311I and 313I. The speed of engine of pump 200 is adjusted at a linear rate, or according a PID algorithm, depending on the submode, based on feedback from transducer 320I. Pump 200 continues to run until second float 313I is deactivated.

To execute the above-described implementation, a user must turn on pump controller 100 and properly configure the controller for a transducer feedback suction program prior to use. The user must also configure the controller for linear or PID throttling submodes. Afterwards, the user selects automatic mode via the user interface to initiate the program. While the program is running, transducer 320I provides real-time feedback to pump controller 100 as to the value of the fluid level (measured from transducer 320I to the fluid surface). When the fluid level rises to depth 760I, the circuit of second float 313I becomes activated (circuit closes if float circuit is normally open; circuit opens if float circuit is normally closed). When the fluid level rises to depth 740I, the circuit of first float 311I becomes activated. Upon activation, a signal is sent to, and processed by, pump controller 100. As a result, pump controller 100 sends a signal to pump 200 to start the engine of pump 200. Once pump 200 is running, the engine speed is adjusted at a linear rate using transducer 320I feedback (if set to linear throttle submode) based on high and low setpoints, and maximum and minimum engine speeds (analogous to the procedure described previously). As the fluid level lowers below first float 311I at depth 740I, the circuit becomes deactivated (circuit re-opens if float circuit is normally open; circuit re-closes if float circuit is normally closed). As the fluid level continues to lower to below second float 313I at depth 760I, the circuit becomes deactivated. Pump controller 100 then sends a signal to pump 200 to shut down.

Alternatively, if the user is running the program with a PID throttling submode, the speed of the engine of pump 200 will be determined by a PID algorithm. For example, if the PID setpoint is set to a value corresponding to depth 750I, pump controller 100 will send a signal to pump 200 to decrease the engine speed if transducer 320I detects that the fluid level is below depth 750I. If transducer 320I detects that the fluid level is above depth 750I, pump controller 100 will send a signal to pump 200 to increase the engine speed. Pump 200 will continue to run as long as second float 313I is activated.

Single Transducer and Dual Float Pumping System—Discharge

Referring now to FIG. 18, in a tenth implementation, pump controller 100 and pump 200 may be coupled with tank 700 for the purpose of filling tank 700 with a fluid. Tank 700 has a transducer 320I at the top 710 of tank 700, a first float 311J near the top 710 of tank 700 at depth 740I, and a second float 313I near the bottom 790 of tank 700 at depth 760J. Pump controller 100 starts the pump engine of pump 200 when the fluid level lowers to depth 760I, deactivating floats 311J and 313I. The speed of engine of pump 200 is adjusted at a linear rate, or according a PID algorithm, depending on the submode, based on feedback from transducer 320J. Pump 200 continues to run until first float 311J is activated.

To execute the above-described implementation, a user must turn on pump controller 100 and properly configure the controller for a transducer feedback suction program prior to use. The user must also configure the controller for linear or PID throttling submodes. Afterwards, the user selects automatic mode via the user interface to initiate the program. While the program is running, transducer 320I provides real-time feedback to pump controller 100 as to the value of the fluid level (measured from transducer 320I to the fluid surface). When the fluid level lowers below first float 311I at depth 740I, the circuit of first float 311I becomes deactivated (circuit opens if float circuit is normally open; circuit closes if float circuit is normally closed). When the fluid level lowers below second float 313I at depth 760I, the circuit of second float 313I becomes deactivated. Upon deactivation, a signal is sent to, and processed by, pump controller 100. As a result, pump controller 100 sends a signal to pump 200 to start the engine of pump 200. Once pump 200 is running, the engine speed is adjusted at a linear rate using transducer 320J feedback (if set to linear throttle submode) based on high and low setpoints, and maximum and minimum engine speeds (analogous to the procedure described previously). As the fluid level rises above second float 313J at depth 760J, the circuit becomes activated (circuit closes if float circuit is normally open; circuit opens if float circuit is normally closed). As the fluid level continues to rise and reaches first float 311J at depth 740J, the circuit becomes activated. Pump controller 100 then sends a signal to pump 200 to shut down.

Alternatively, if the user is running the program with a PID throttling submode, the speed of the engine of pump 200 will be determined by a PID algorithm. For example, if the PID setpoint is set to depth 750J, pump controller 100 will send a signal to pump 200 to decrease the engine speed if transducer 320J detects that the fluid level is above depth 750J. If transducer 320J detects that the fluid level is below depth 750J, pump controller 100 will send a signal to pump 200 to increase the engine speed. Pump 200 will continue to run as long as first float 311J is deactivated.

Referring now, generally, to FIGS. 19-37, multiple exemplary processes are illustrated showing exemplary steps which the pump controller logic may follow. For example, FIG. 19 illustrates an exemplary process 19000 for characterizing the operation of a pump, comprising the steps:

-   -   Step 19001: Start selected mode, option, or program     -   Step 19002: Check if pump is running; if “yes,” proceed to Step         19003     -   Step 19003: Map pump curve to table     -   Step 19004: Plot current running parameters of pump to pump         curve     -   Step 19005: Check if pump is running within pump curve; if         “yes,” return to Step 19003; if “no,” proceed to step 19006     -   Step 19006: Display warning indicating pump is operating outside         of pump curve     -   Step 19007: Display option to override; if not selected, return         to Step 19003; if selected, proceed to Step 19008     -   Step 19008: Display command to enter user ID     -   Step 19009: User enters ID and information is stored in memory;         return to Step 19003

FIG. 20 illustrates an exemplary process 20000 for setting an operational mode of a pump, comprising the steps:

-   -   Step 20001: Start selected mode, option, or program     -   Step 20002: Display level 0 menu options (modes which require no         password to access)     -   Step 20003: Determine selected level 0 menu option from options         20003A-G; if configuration mode, 20003G, is selected, proceed to         Step 20004; if one of options 20003A-F is selected, proceed to         initiate the selected level 0 menu option     -   Step 20004: Request level 1 password; if password is incorrect,         return to Step 20002; if password is correct, proceed to Step         20005     -   Step 20005: Display level 1 menu options (modes which require         level 1 password authentication)     -   Step 20006: Determine selected menu option from options         20006A-G; if next page of configuration mode, 20006G, is         selected, proceed to Step 20007; if one of options 20006A-F is         selected, proceed to initiate the selected level 1 menu option     -   Step 20007: Display level 2 menu options (modes which require         level 2 password authentication)     -   Step 20008: Determine selected menu option from options         20008A-G; if diagnostics mode, 20008G, is selected, proceed to         Step 20009; if one of options 20008A-F is selected, proceed to         initiate the selected level 2 menu option     -   Step 20009: Request level 2 password; if password is incorrect,         return to Step 20007; if password is correct, proceed to step         20010     -   Step 20010: Display diagnostics     -   Step 20011: Determine selected menu option from options 20011A-G

FIG. 21 illustrates an exemplary process 21000 of implementing a password authentication procedure, comprising the steps:

-   -   Step 21001: Start selected mode, option, or program     -   Step 21002: Request password     -   Step 21003: Determine if password is correct; if password is         correct, proceed to Step 20014; if password is incorrect,         proceed to Step 21024     -   Step 21014: Notify user of accepted password     -   Step 21024: Determine if the number of password attempts is less         than, or equal to, 3; if number of password attempts is less         than, or equal to 3, proceed to Step 21025; if number of         password attempts exceeds 3, proceed to Step 21035     -   Step 21015: Continue with currently selected mode, option, or         program     -   Step 21025: Notify user of denial of access     -   Step 21035: Notify user of incorrect password; return to step         21002     -   Step 21026: Return to beginning of currently selected mode,         option, or program

FIG. 22 illustrates an exemplary process 22000 for changing a startup timer, comprising the steps:

-   -   Step 22001: Start selected mode, option, or program     -   Step 22002: Display options to change startup timer in manual         mode or automatic mode     -   Step 22003: Determine if option to change startup timer in         manual mode is selected, or if option to change startup timer in         automatic mode is selected; if the former option is selected,         proceed to step 22014; if the latter option is selected, proceed         to step 22024; if neither option is selected and the exit key is         pressed, proceed to step 22004     -   Step 22004: Return to beginning of selected mode, option, or         program     -   Step 22014: Display editable manual startup timer     -   Step 22024: Display editable automatic startup timer     -   Step 22015: User enters manual startup timer     -   Step 22025: User enters automatic startup timer     -   Step 22016: Save entered information to memory; return to Step         22003     -   Step 22026: Save entered information to memory; return to Step         22003

FIG. 23 illustrates an exemplary process 23000 of executing a manual mode startup sequence, comprising the steps:

-   -   Step 23001: Start selected mode, option, or program     -   Step 23002: Determine if manual mode is selected; if manual mode         is selected, proceed to Step 23003; if manual mode is not         selected, proceed with currently selected mode, option, or         program     -   Step 23003: Display startup icon for 3 seconds     -   Step 23004: Determine if oil level is low; if oil level is not         low, proceed to step 23015; if oil level is low, proceed to step         23025     -   Step 23015: Determine if battery voltage is low; if battery         voltage is not low, proceed to Step 23016; if battery voltage is         low; proceed to Step 23026     -   Step 23025: Display oil level warning message     -   Step 23016: Determine if fuel level is low; if fuel level is not         low, proceed to Step 23017; if fuel level is low, proceed to         Step 23027     -   Step 23026: Display low voltage warning message and display         current voltage value     -   Step 23017: Determine if coolant level is low; if coolant level         is not low, proceed to Step 23018; if coolant level is low,         proceed to Step 23028     -   Step 23027: Display fuel level warning message     -   Step 23018: Display manual crank option     -   Step 23028: Display low coolant warning message

FIG. 24 illustrates an exemplary process 24000 for starting a pump engine in manual mode, comprising the steps:

-   -   Step 24001: Start selected mode, option, or program     -   Step 24002: Determine if engine crank option is selected; if         engine crank option is selected, proceed to Step 24003; if         engine crank option is not selected, proceed with currently         selected mode, option, or program     -   Step 24003: Start 10-second timer     -   Step 24004: Display countdown timer     -   Step 24005: Determine if timer is at or above 10 seconds; if         timer is at or above 10 seconds, proceed to step 24016; if timer         is below 10 seconds, proceed to step 24036     -   Step 24016: Display option to crank engine     -   Step 24036: Display “please wait” message; return to Step 24005     -   Step 24017: Determine if user selected option to crank engine;         if user selected option to crank engine, proceed to Step 24018;         if user did not select option to crank engine, return to Step         24016     -   Step 24018: Crank engine for 10 seconds     -   Step 24019: Start 10-second timer     -   Step 24020: Display countdown timer     -   Step 24021: Run engine at idle     -   Step 24022: Determine if timer is at or above 10 seconds; if         timer is at or above 10 seconds, proceed to Step 24023; if timer         is below 10 seconds, return to step 24021.     -   Step 24023: Increase engine speed to 1000 RPM     -   Step 24024: Display 10-second timer     -   Step 24025: Determine if timer is at or above 10 seconds; if         timer is at or above 10 seconds, proceed to Step 24026; if timer         is below 10 seconds, return to step 24024     -   Step 24026: Return to beginning of currently selected mode,         option, or program

FIG. 25 illustrates an exemplary process 25000 of executing an automatic mode startup sequence, comprising the steps:

-   -   Step 25001: Start selected mode, option, or program     -   Step 25002: Determine if automatic mode is selected; if         automatic mode is selected, proceed to Step 25003; if automatic         mode is not selected, proceed with currently selected mode,         option, or program     -   Step 25003: Display startup icon for 3 seconds     -   Step 25004: Activate audio/visual alarm for 30 seconds     -   Step 25005: Determine if oil level is low; if oil level is not         low, proceed to Step 25016; if oil level is low, proceed to Step         25036     -   Step 25016: Determine if battery voltage is low; if battery         voltage is not low, proceed to Step 25017; if battery voltage is         low, proceed to Step 25037     -   Step 25036: Display low oil warning message; proceed to step         25016     -   Step 25017: Determine if fuel level is low; if fuel level is not         low, proceed to Step 25018; if fuel level is low, proceed to         Step 25038     -   Step 25037: Display low voltage warning message and display         current voltage;

proceed to Step 25017

-   -   Step 25018: Determine if coolant level is low; if coolant level         is not low, proceed to Step 25019; if coolant level is low,         proceed to Step 25039     -   Step 25038: Display low fuel warning message; proceed to Step         25018     -   Step 25019: Load warm up and cool down settings     -   Step 25039: Display low coolant level warning message; proceed         to Step 25019     -   Step 25020: Crank engine     -   Step 25021: Display automatic start option and timers     -   Step 25022: Increase engine speed from 800 RPM to 1000 RPM in 10         seconds     -   Step 25023: Maintain engine speed for 10 seconds     -   Step 25024: Return to original mode, option, or program

FIG. 26 illustrates an exemplary process 26000 for executing the shutdown of automatic mode, comprising the steps:

-   -   Step 26001: Start mode, option, or program     -   Step 26002: Display shutdown message, engine speed, and timers     -   Step 26003: Reduce engine speed to 800 RPM over 10 seconds     -   Step 26004: Maintain engine speed for 5 seconds     -   Step 26005: Turn off engine     -   Step 26006: Return to original mode, option, or program

FIG. 27 illustrates an exemplary process 27000 for executing a manual mode program, comprising the steps:

-   -   Step 27001: Start selected mode, option, or program     -   Step 27002: Determine if manual mode is selected; if manual mode         is selected, proceed to Step 27003; if manual mode is not         selected, proceed with currently selected mode, option, or         program     -   Step 27003: Display manual crank button; if user presses manual         crank button, perform startup sequence; if user does not press         manual crank button, continue to display button     -   Step 27004: Display manual mode interface and current engine         speed     -   Step 27005: Determine if user adjusts engine speed; if user         decreases displayed engine speed value, proceed to Step 27016;         if user increases displayed engine speed value, proceed to Step         27036; if user selects “option” button, proceed to Step 27026     -   Step 27016: If user selected engine speed is greater than idle         speed, lower engine speed in increments of 10 RPM until actual         engine speed matches user selected engine speed     -   Step 27026: Request password; if entered password is incorrect,         return to Step 27004; if entered password is correct, proceed to         Step 27007     -   Step 27036: If user selected engine speed is less than maximum         engine speed, increase engine speed in increments of 10 RPM         until actual engine speed matches user selected engine speed     -   Step 27027: Display engine speed options

FIG. 28 illustrates an exemplary process 28000 of setting maximum and minimum engine speed values, comprising the steps:

-   -   Step 28001: Start selected mode, option, or program     -   Step 28002: Display option to change maximum or minimum engine         speed     -   Step 28003: Determine if user has selected option to change         maximum or minimum engine speed; if user presses exit button,         proceed to Step 28004; if user has selected to change minimum         engine speed, proceed to Step 28014; if user has selected to         change maximum engine speed, proceed to Step 28024     -   Step 28004: Return to original mode, option, or program     -   Step 28014: Display option for user to enter minimum engine         speed value     -   Step 28024: Display option for user to enter maximum engine         speed value     -   Step 28015: User enters minimum engine speed value     -   Step 28025: User enters maximum engine speed value     -   Step 28016: Save entered value to memory     -   Step 28026: Save entered value to memory

FIG. 29 illustrates an exemplary process 29000 for executing automatic mode with a float system, comprising the steps:

-   -   Step 29001: Start selected mode, option, or program     -   Step 29002: Determine if automatic mode with floats is selected;         if automatic mode with floats is selected, proceed to Step         29003; if automatic mode with floats is not selected, proceed         with currently selected mode, option, or program     -   Step 29003: Display automatic mode with floats interface     -   Step 29004: Determine if one or two float are equipped; if one         float is equipped, proceed to Step 29105; if two floats are         equipped, proceed to Step 29205     -   Step 29105: Display message indicating one float mode is         selected     -   Step 29205: Display message indicating two float mode is         selected     -   Step 29106: Display option to set float type as normally open         (NO) or normally closed (NC)     -   Step 29206: Display option to set first float type as normally         open or normally closed     -   Step 29107: User selects NO or NC relay     -   Step 29207: User selects NO or NC relay     -   Step 29108: Save float data to memory     -   Step 29208: Save first float data to memory     -   Step 29109: User enters desired engine speed for when float is         tripped; save speed data to memory     -   Step 29209: Display option to set second float type as normally         open or normally closed     -   Step 29110: Adjust warm up and cool down procedure     -   Step 29210: User selects NO or NC relay     -   Step 29111: Display message indicating controller is operating         in automatic mode with a single float     -   Step 29211: Save second float data to memory     -   Step 29112: Determine if float is tripped; if float is tripped,         proceed to Step 29113; if float is untripped; return to Step         29111     -   Step 29212: User enters desired engine speed; save speed data to         memory     -   Step 29113: Initiate automatic mode startup sequence     -   Step 29213: Adjust warm up and cool down procedure     -   Step 29114: Increase engine speed to stored value in memory     -   Step 29214: Display message indicating controller is operating         in automatic mode with dual floats     -   Step 29115: Determine if float is tripped; if float is tripped,         return to Step 29114; if float is untripped; proceed to Step         29116     -   Step 29215: Determine if first and second floats are tripped; if         floats are tripped, proceed to Step 29216; if floats are         untripped; return to Step 29114     -   Step 29116: Initiate automatic mode shutdown sequence     -   Step 29216: Initiate automatic mode startup sequence     -   Step 29217: Increase engine speed to stored value in memory     -   Step 29218: Determine if first float is tripped; if first float         is tripped, return to Step 29217; if first float is untripped,         proceed to Step 29219     -   Step 29219: Initiate automatic mode shutdown sequence

FIG. 30 illustrates an exemplary process 30000 for executing manual multi-state operation mode, comprising the steps:

-   -   Step 30001: Start selected mode, option, or program     -   Step 30002: Determine if manual multi-state operation mode is         selected; if manual multi-state operation mode is selected,         proceed to Step 30003; if manual multi-state operation mode is         not selected, proceed with currently selected mode, option, or         program     -   Step 30003: Display manual multi-state operation mode interface     -   Step 30004: Display options for number of engine speeds     -   Step 30005: Determine number of engine speeds selected; if one         engine speed is selected, proceed to Step 30106; if two engine         speeds are selected, proceed to Step 30206; if three engine         speeds are selected, proceed to Step 30306; if four engine         speeds are selected, proceed to Step 30406; if five engine         speeds are selected, proceed to Step 30506     -   Step 30106: Display option to enter first speed     -   Step 30206: Display option to enter first speed     -   Step 30306: Display option to enter first speed     -   Step 30406: Display option to enter first speed     -   Step 30506: Display option to enter first speed     -   Step 30107: User enters first speed; save data to memory     -   Step 30207: User enters first speed; save data to memory     -   Step 30307: User enters first speed; save data to memory     -   Step 30407: User enters first speed; save data to memory     -   Step 30507: User enters first speed; save data to memory     -   Step 30208: Display option to enter second speed     -   Step 30308: Display option to enter second speed     -   Step 30408: Display option to enter second speed     -   Step 30508: Display option to enter second speed     -   Step 30209: User enters second speed; save data to memory     -   Step 30309: User enters second speed; save data to memory     -   Step 30409: User enters second speed; save data to memory     -   Step 30509: User enters second speed; save data to memory     -   Step 30310: Display option to enter third speed     -   Step 30410: Display option to enter third speed     -   Step 30510: Display option to enter third speed     -   Step 30311: User enters third speed; save data to memory     -   Step 30411: User enters third speed; save data to memory     -   Step 30511: User enters third speed; save data to memory     -   Step 30412: Display option to enter fourth speed     -   Step 30512: Display option to enter fourth speed     -   Step 30413: User enters fourth speed; save data to memory     -   Step 30513: User enters fourth speed; save data to memory     -   Step 30514: Display option to enter fifth speed     -   Step 30515: User enters fifth speed; save data to memory     -   Step 30016: Display option to select input type     -   Step 30017: Determine which input type is selected; if analog         input type is selected, proceed to Step 30618; if digital input         type is selected, proceed to Step 30718; if relay input type is         selected, proceed to Step 30818     -   Step 30618: Determine type of analog input (0-20 ma, 0-10v, or         4-20 ma)     -   Step 30718: Determine type of digital input (high side or low         side)     -   Step 30818: Determine type of relay input (normally open or         normally closed)     -   Step 30619: Store data to memory     -   Step 30719: Store data to memory     -   Step 30819: Store data to memory     -   Step 30020: Display input type and inputs to be used     -   Step 30021: Initiate engine crank sequence     -   Step 30022: Run engine at idle speed     -   Step 30023: Display manual multi-state operation mode interface     -   Step 30024: Detect feedback from input; if feedback signal         indicates engine speed is to be decreased, proceed to Step         30025A; if feedback signal indicates engine speed is to be         increased, proceed to Step 30025B     -   Step 30025A: If current engine speed is greater than idle speed,         decrease engine speed to next lowest selected speed or idle     -   Step 30025B: If current engine speed is less than maximum engine         speed, increase engine speed to next highest selected speed

FIG. 31 illustrates an exemplary process 31000 for executing a warm up and cool down procedure, comprising the steps:

-   -   Step 31001: Start selected mode, option, or program     -   Step 31002: Display option to change warm up and cool down         procedure     -   Step 31003: Display option to change warm up procedure or cool         down procedure, or to select default parameters; if exit button         is pressed, proceed to Step 31004; if option to change warm up         procedure is selected, proceed to Step 31104; if option to         change cool down procedure is selected, proceed to Step 31204;         if option to select default parameters is selected, proceed to         Step 31304     -   Step 31004: Determine if all setpoints are set; if setpoints are         not all set, proceed to Step 31005A; if all setpoints are set,         proceed to Step 31005B     -   Step 31104: Display option to change warm up engine speed     -   Step 31204: Display option to change cool down engine speed     -   Step 31304: Display message indicating default parameters are         loading     -   Step 31005A: Display message to load default parameters or enter         data manually; return to Step 31002     -   Step 31005B: Return to original mode, option, or program     -   Step 31105: User enters warm up speed     -   Step 31205: User enters cool down speed     -   Step 31305: Load default parameters     -   Step 31106: Save entered data to memory     -   Step 31206: Save entered data to memory     -   Step 31107: Display option to change warm up timer     -   Step 31207: Display option to change cool down timer     -   Step 31108: User enters warm up timer value     -   Step 31208: User enters cool down timer value     -   Step 31109: Save entered data to memory     -   Step 31209: Save entered data to memory     -   Step 31110: Display option to change warm up ramp time     -   Step 31210: Display option to change cool down ramp time     -   Step 31111: User enters warm up ramp time     -   Step 31211: User enters cool down ramp time     -   Step 31112: Save entered data to memory     -   Step 31212: Save entered data to memory

FIG. 32 illustrates an exemplary process 32000 for executing automatic mode with one or more transducers, comprising the steps:

-   -   Step 32001: Start selected mode, option, or program     -   Step 32002: Determine if automatic mode with transducers is         selected; if automatic mode with transducers is selected,         proceed to Step 32003; if automatic mode with transducers is not         selected, proceed with currently selected mode, option, or         program     -   Step 32003: Display automatic mode with transducers interface     -   Step 32004: Adjust analog input, scaling, and units     -   Step 32005: Change warm up and cool down procedure     -   Step 32006: Display option to adjust engine running speed     -   Step 32007: User enters engine running speed; data stored to         memory     -   Step 32008: Display option to specify setpoint for engine to run     -   Step 32009: Set setpoint as engine start setpoint     -   Step 32010: Display option to specify setpoint for engine         shutdown     -   Step 32011: Set setpoint as setpoint for engine shutdown     -   Step 32012: Display that controller is operating in automatic         mode with transducers     -   Step 32013: Determine if current measured value from transducers         is greater than or equal to the start setpoint; if current         measured value from transducers is greater than or equal to the         start setpoint, proceed to Step 32014; if current measured value         from transducers is less than the start setpoint, return to Step         32012     -   Step 32014: Initiate automatic mode startup sequence     -   Step 32015: Increase engine speed to stored speed value     -   Step 32016: Determine if current measured value from transducers         is less than the shutdown setpoint; if current measured value         from transducers is less than the shutdown setpoint, proceed to         Step 32017; if current measured value from transducers is equal         to, or greater than, the shutdown setpoint, return to Step 32015     -   Step 32017: Initiate automatic mode shutdown sequence; return to         Step 32012

FIG. 33 illustrates an exemplary process 33000 for setting analog inputs, scaling, and units, comprising the steps:

-   -   Step 33001: Start selected mode, option, or program     -   Step 33001: Display option to change analog inputs, scaling,         units, or failure response     -   Step 33002: Determine if option to change analog inputs,         scaling, or units has been selected     -   Step 33003: Determine what option has been selected; if exit         button has been pressed, proceed to Step 33004; if option to         change analog inputs has been selected, proceed to Step 33014;         if option to change scaling has been selected, proceed to Step         33024; if option to change units has been selected, proceed to         Step 33034     -   Step 33004: Determine if all settings have been entered; if not         all settings are entered, proceed to Step 33005A; if all         settings are entered, proceed to Step 33005B     -   Step 33014: Display option to change analog input     -   Step 33024: Display option to change scaling     -   Step 33034: Display option to change units     -   Step 33005A: Display message to fill in settings     -   Step 33005B: Return to original mode, option, or program     -   Step 33015: User enters analog input data     -   Step 33025: User enters scaling data     -   Step 33035: User enters unit data     -   Step 33016: Save data to memory     -   Step 33026: Save data to memory     -   Step 33036: Save data to memory

FIG. 34 illustrates an exemplary process 34000 for executing automatic mode with a float and transducer using linear throttling, comprising the steps:

-   -   Step 34001: Start selected mode, option, or program     -   Step 34002: Determine if automatic mode with float and         transducer and linear throttling is selected; if automatic mode         with float and transducer and linear throttling is selected,         proceed to Step 34003; if automatic mode with float and         transducer and linear throttling is not selected, proceed with         currently selected mode, option, or program     -   Step 34003: Display automatic mode with float and transducer and         linear throttling interface     -   Step 34004: Display option to select float or analog input     -   Step 34005: Determine if float or analog setpoint is selected;         if analog setpoint is selected, proceed to Step 34106; if float         is selected, proceed to Step 34206     -   Step 34106: Load analog input, scaling, and unit data     -   Step 34206: Display option to specify whether float relay is         normally open or normally closed     -   Step 34107: Display option to specify setpoint value (unit based         one loaded data)     -   Step 34207: User enters float relay information; designate and         display relay to be used     -   Step 34108: User enters setpoint value     -   Step 34208: Load analog input, scaling, and unit data     -   Step 34109: Display option for user to select direct (signal         increases, engine speed increases) or inverse (signal increases,         engine speed decreases)     -   Step 34209: Display option for user to select direct or inverse     -   Step 34110: User selects option; selection stored to memory     -   Step 34210: User selects option; selection stored to memory     -   Step 34111: Adjust warm up and cool down procedure     -   Step 34211: Adjust warm up and cool down procedure     -   Step 34112: Display current operating mode     -   Step 34212: Display current operating mode     -   Step 34113: Determine if measured signal if greater than or         equal to the setpoint; if measured signal if greater than or         equal to the setpoint, proceed to Step 34114; if measured signal         is less than the setpoint, return to Step 34112     -   Step 34213: Determine if float is tripped; if float is tripped,         proceed to Step 34214; if float is untripped, return to Step         34212     -   Step 34114: Initiate automatic startup mode     -   Step 34214: Initiate automatic startup mode     -   Step 34115: Increase engine speed to warm up speed     -   Step 34215: Increase engine speed to warm up speed     -   Step 34116: Increase engine speed based on input signal, or         based one last speed if no signal is received     -   Step 34216: Increase engine speed based on input signal     -   Step 34117: Determine if analog signal is being received; if         analog signal is being received, proceed to Step 34118; if         analog signal is not being received, return to Step 34116     -   Step 34217: Determine if float is untripped; if float is         untripped, proceed to Step 34218, if float is tripped, return to         Step 34216     -   Step 34118: Determine if measured signal is less than setpoint,         if measured signal is less than setpoint, proceed to Step 34119;         if measured signal equal to, or greater than, setpoint, return         to Step 34116     -   Step 34218: Initiate automatic mode shutdown     -   Step 34119: Initiate automatic mode shutdown

FIG. 35 illustrates an exemplary process 35000 for executing automatic mode with PID control is illustrated, comprising the steps:

-   -   Step 35001: Start selected mode, option, or program     -   Step 35002: Determine if automatic mode with PID control is         selected; if automatic mode with PID control is selected,         proceed to Step 35003; if automatic mode with PID control is not         selected, continue with currently selected mode, option, or         program     -   Step 35003: Display automatic mode with PID control interface     -   Step 35004: Adjust analog input, scaling, and units     -   Step 35005: Load warm up and cool down procedures     -   Step 35006: Adjust PID settings     -   Step 35007: Display option to specify engine start by float or         by transducer     -   Step 35008: Determine method selected; if float selected,         proceed to Step 35109; if transducer selected, proceed to Step         35209     -   Step 35109: Display selected method     -   Step 35209: Display option to specify setpoint for turning         engine on     -   Step 35110: Display option to specify if float relay is normally         open or normally closed     -   Step 35210: User enters setpoint value     -   Step 35111: User selects relay type     -   Step 35211: Display option to specify setpoint for turning         engine off     -   Step 35112: Store selection in memory     -   Step 35212: User enters setpoint value     -   Step 35113: Display option for PID target setpoint     -   Step 35213: Display option for PID target setpoint     -   Step 35114: User enters PID target setpoint value     -   Step 35214: User enters PID target setpoint value     -   Step 35115: Display current operating mode     -   Step 35215: Display current operating mode     -   Step 35116: Determine if float is tripped; if float is tripped,         proceed to Step 35117; if float is untripped, return to Step         35115     -   Step 35216: Determine if measured value from transducer is         greater than or equal to the start setpoint; if measured value         from transducer is greater than or equal to the start setpoint,         proceed to Step 35217; if measured value from transducer is less         than the start setpoint, return to Step 35215     -   Step 35117: Initiate automatic startup sequence     -   Step 35217: Initiate automatic startup sequence     -   Step 35118: Increase engine speed to warm up speed     -   Step 35218: Increase engine speed to warm up speed     -   Step 35119: Increase engine speed and run at speed determined by         PID feedback to reach target setpoint     -   Step 35219: Increase engine speed and run at speed determined by         PID feedback to reach target setpoint     -   Step 35120: Determine if float is untripped; if float is         untripped, proceed to Step 35121; if float is tripped, return to         Step 35119     -   Step 35220: Determine if signal if being received from         transducer; if signal is being received from transducer, proceed         to Step 35221; if signal is not being received from transducer,         return to Step 35219     -   Step 35121: Initiate shutdown sequence     -   Step 35221: Determine if measured signal from transducer is         greater than stop setpoint; if measured signal from transducer         is greater than stop setpoint, proceed to Step 35222; if         measured signal from transducer less than, or equal to, stop         setpoint, return to Step 35219     -   Step 35222: Initiate shutdown sequence

FIG. 36 illustrates an exemplary process 36000 for changing PID parameters, comprising the steps:

-   -   Step 36001: Start selected mode, option, or program     -   Step 36002: Display option to change proportional, integral, or         derivative numbers, or to select default parameters     -   Step 36003: Determine option selected; if exit button is         pressed, proceed to Step 36004; if option to change proportional         number is selected, proceed to Step 36014; if option to change         integral number is selected, proceed to Step 36024; if option to         change derivate number is selected, proceed to Step 36034; if         option to select default parameters is selected, proceed to step         36044     -   Step 36004: Determine if all settings are filled in; if not all         settings are filled in, proceed to Step 36005A; if all settings         are filled in, proceed to Step 36005B     -   Step 36014: Display option to display proportional number     -   Step 36024: Display option to display integral number     -   Step 36034: Display option to display derivative number     -   Step 36044: Display default PID settings     -   Step 36005A: Display message to user to fill in settings     -   Step 36005B: Return to original mode, option, or program     -   Step 36015: User enters proportional number     -   Step 36025: User enters integral number     -   Step 36035: User enters derivative number     -   Step 36045: Display option to load default PID settings     -   Step 36016: Store entered data to memory     -   Step 36026: Store entered data to memory     -   Step 36036: Store entered data to memory     -   Step 36046: Determine whether option to load default settings is         selected; if option to load default settings is selected,         proceed to Step 36047; if option to load default settings is not         selected, return to Step 36002     -   Step 36047: Load default settings; save to memory

FIG. 37 illustrates and exemplary process 37000 for setting a pump scheduler program, comprising the steps:

-   -   Step 37001: Start selected mode, option, or program     -   Step 37002: Determine if scheduler mode is selected; if         scheduler mode is selected, proceed to Step 37003; if scheduler         mode is not selected, continue with currently selected mode,         option, or program     -   Step 37003: Display scheduler mode interface     -   Step 37004: Display option for specifying number of schedules     -   Step 37005: Determine number of schedules selected; if one         schedule is selected, proceed to Step 37106; if two schedules         are selected, proceed to Step 37206; if three schedules are         selected, proceed to Step 37306; if four schedules are selected,         proceed to Step 37406; if five schedules are selected, proceed         to Step 37506     -   Step 37106: Display option to enter first schedule     -   Step 37206: Display option to enter first schedule     -   Step 37306: Display option to enter first schedule     -   Step 37406: Display option to enter first schedule     -   Step 37506: Display option to enter first schedule     -   Step 37107: User enters first schedule; save data to memory     -   Step 37207: User enters first schedule; save data to memory     -   Step 37307: User enters first schedule; save data to memory     -   Step 37407: User enters first schedule; save data to memory     -   Step 37507: User enters first schedule; save data to memory     -   Step 37208: Display option to enter second schedule     -   Step 37308: Display option to enter second schedule     -   Step 37408: Display option to enter second schedule     -   Step 37508: Display option to enter second schedule     -   Step 37209: User enters second schedule; save data to memory     -   Step 37309: User enters second schedule; save data to memory     -   Step 37409: User enters second schedule; save data to memory     -   Step 37509: User enters second schedule; save data to memory     -   Step 37310: Display option to enter third schedule     -   Step 37410: Display option to enter third schedule     -   Step 37510: Display option to enter third schedule     -   Step 37311: User enters third schedule; save data to memory     -   Step 37411: User enters third schedule; save data to memory     -   Step 37511: User enters third schedule; save data to memory     -   Step 37412: Display option to enter fourth schedule     -   Step 37512: Display option to enter fourth schedule     -   Step 37413: User enters fourth schedule; save data to memory     -   Step 37513: User enters fourth schedule; save data to memory     -   Step 37514: Display option to enter fifth schedule     -   Step 37515: User enters fifth schedule; save data to memory     -   Step 37016: Display option to run program     -   Step 37017: Determine if option to run program is selected; if         option to run program is selected, proceed to Step 37018; if         option to run program is not selected, return to Step 37002     -   Step 37018: Display currently running program     -   Step 37019: Determine if scheduled start has been reached and if         engine is off; if scheduled start has been reached and if engine         is off, proceed to Step 37010; if scheduled start has not been         reached and if engine is on, repeat Step 37009     -   Step 37020: Initiate startup sequence     -   Step 37021: Increase engine speed and run at idle     -   Step 37022: Determine if timer as expired; if timer has expired,         proceed to Step 37023; if timer has not expired, return to Step         37021     -   Step 37023: Initiate shutdown sequence

Referring, generally, to FIGS. 38A-AA, various diagrams are shown which illustrate exemplary interfaces for viewing, running, or editing modes, programs, menus, parameters, and data related to a pump controller, a pump, and various input sensors, which can be displayed on the pump controller user interface display. For example, as illustrated in FIGS. 38C-F, a pump controller include a job setup interface for specifying (i) whether the connected pump is an agriculture pump, (ii) whether the job is for a flooded suction application, (iii) the type of job (drain or fill); the start/stop method (one float, two floats, or transducer), (iv) the throttle control type (constant speed, linear acceleration, or PID control), (v) the float type (normally open or normally closed), (vi) engine speed setpoint, (vii) PID setpoint, and (viii) transducer setpoints and units).

In some embodiments, the pump controller may include one or more interfaces for displaying warning messages. For example, as illustrated in FIGS. 38K-M, a pump controller may include interfaces which list warning messages, such as, but not limited to, low fuel warnings. The interfaces may also include information regarding when the warning was issued and what device (or port) the warning corresponds to. The user interface may also display editable thresholds for alarms and/or warning messages as seen, for example, in FIGS. 38S-T and 38AA.

As further illustrated in FIGS. 38Q-R and 38U-Z, a pump controller user interface may include configuration interfaces for input devices, pump curve data, and network settings. For example. and without limitation, the user interface may display editable configuration parameters related to floats and/or transducers. A user can also view and edit mathematical and algorithmic information, such as PID coefficients and pump curve polynomial coefficients. A user may also view or edit network settings, such as internet protocol (“IP”), gateway, subnet mask, and broadcast addresses.

It is to be understood that variations, modifications, and permutations of embodiments of the present invention may be made without departing from the scope thereof. It is also to be understood that the present invention is not limited by the specific embodiments, descriptions, or illustrations or combinations of either components or steps disclosed herein. Thus, although reference has been made to the accompanying figures, it is to be appreciated that these figures are exemplary and are not meant to limit the scope of the invention. 

What is claimed is:
 1. A pump controller for controlling a pump, said pump comprising an engine and an engine controller, said pump controller comprising: a) a processor; b) a memory device for storing processor instructions; c) a user interface; d) a pump interface for communication with said engine controller; and e) a fluid level sensor interface for communication with a fluid level sensor.
 2. The pump controller of claim 1, wherein said user interface comprises a touchscreen.
 3. The pump controller of claim 1, wherein said user interface consists of one of the group consisting of at least one button, at least one switch, at least one light, and combinations thereof.
 4. The pump controller of claim 1, wherein said user interface comprises: a) a transceiver operatively engaged to a computer network; and b) a remote user device operatively engaged to said computer network.
 5. The pump controller of claim 4, wherein said transceiver comprises an antenna.
 6. The pump controller of claim 1, wherein said engine controller is an electronic engine controller.
 7. The pump controller of claim 6, wherein said pump controller is adapted to, through said pump interface, provide instructions to said engine controller.
 8. The pump controller of claim 6, wherein said pump controller is adapted to receive, from said engine controller through said pump interface, engine data.
 9. The pump controller of claim 1, wherein said engine controller comprises a motor and an armature for engaging with a throttle of said engine.
 10. The pump controller of claim 1, wherein said pump controller is adapted to receive, from said fluid level sensor through said fluid sensor interface, an indication of the level of a fluid in a fluid tank.
 11. The pump controller of claim 1, further comprising a pump fluid sensor interface for communication with a pump fluid sensor.
 12. The pump controller of claim 11, wherein said pump controller is adapted to receive, from said pump fluid sensor through said pump fluid sensor interface, an indication of the pressure of a fluid in said pump.
 13. The pump controller of claim 12, said pump further comprising a volute, wherein said fluid pressure sensor is engaged to a fluid inlet of a volute of said pump.
 14. The pump controller of claim 12, said pump further comprising a volute, wherein said fluid pressure sensor is engaged to a fluid outlet of a volute of said pump.
 15. The pump controller of claim 11, wherein said pump controller is adapted to receive, from said pump fluid sensor through said pump fluid sensor interface, an indication of the rate of flow of said fluid in said pump.
 16. The pump controller of claim 15, said pump further comprising a volute, wherein said fluid pressure sensor is engaged to said volute of said pump.
 17. The pump controller of claim 1, further comprising a fuel sensor interface for communication with a fuel level sensor.
 18. The pump controller of claim 17, wherein said pump controller is adapted to receive, from said fuel level sensor through said fuel sensor interface, an indication of the level of fuel in a fuel tank.
 19. The pump controller of claim 1, further comprising an oil pressure sensor interface for communication with an oil pressure sensor.
 20. The pump controller of claim 19, wherein said pump controller is adapted to receive, from said oil pressure sensor through said oil pressure sensor interface, an indication of the pressure of oil in an oil line.
 21. The pump controller of claim 20, wherein said oil line is engaged with an oil inlet of said engine of said pump.
 22. The pump controller of claim 20, wherein said oil line is engaged with an oil outlet of said engine of said pump.
 23. A system for pumping a fluid with a pump, said pump comprising a volute, an engine and an electronic engine controller, said system comprising: a) at least one fluid level sensor for detecting a level of said fluid in a fluid tank; b) a fuel level sensor for detecting a level of fuel in a fuel tank; c) an inlet oil pressure sensor for detecting an inlet pressure of oil in an inlet oil line associated with said engine; d) an outlet oil pressure sensor for detecting an outlet pressure of said oil in an outlet oil line associated with said engine; e) a pump fluid sensor for detecting the condition of said fluid in an inlet of said volute of said pump; and f) a pump controller operatively engaged with said engine controller, said at least one fluid level sensor, said fuel level sensor, said inlet oil pressure sensor, said outlet oil pressure sensor, and said pump fluid sensor, said pump controller comprising a processor, a memory device storing processor instructions, and a user interface.
 24. The system of claim 23, wherein said processor instructions, when executed by said processor, provide instructions to said engine controller in response to said level of fluid in said fluid tank, said level of said fuel, said inlet pressure of said oil, said outlet pressure of said oil, said inlet pressure of said fluid, and said outlet pressure of said fluid.
 25. The system of claim 23, wherein said pump fluid sensor comprises a pressure sensor for detecting a pressure of said fluid in said volute, and said condition of said fluid in said volute is said pressure.
 26. The system of claim 23, wherein said pump fluid sensor comprises a flow sensor for detecting a flow rate of said fluid in said volute, and said condition of said fluid in said volute is said flow rate.
 27. The system of claim 23, wherein a first of said at least one fluid level sensor comprises a float.
 28. The system of claim 23, wherein first of said at least one fluid level sensor comprises a transducer.
 29. The system of claim 23, wherein a second of said at least one fluid level sensor comprises a float.
 30. The system of claim 23, wherein said user interface of said pump controller comprises a touchscreen.
 31. The system of claim 23, wherein said user interface of said pump controller comprises: a) a wireless transceiver operatively engaged with a computer network; and b) a remote user device operatively engaged with a said computer network.
 32. A system for pumping a fluid comprising: a) a first fluid tank for containing said fluid, said first fluid tank comprising a tank port; b) a first fluid level sensor for detecting the level of said fluid in said first fluid tank; c) a fuel tank; d) a fuel level sensor for detecting the level of fuel in said fuel tank; e) an inlet oil line; f) an inlet oil pressure sensor for detecting a pressure of oil in said inlet oil line; g) an outlet oil line; h) an outlet oil pressure sensor for detecting a pressure of said oil in said outlet oil line; i) a first fluid pressure sensor for detecting a first pressure of said fluid; j) a pump fluid flow rate sensor for detecting a flow rate of said fluid; k) a pump comprising a volute, an engine, and an engine controller, said volute comprising a first port engaged with said tank port of said first fluid tank and said first fluid pressure sensor, said volute engaged with said pump fluid flow rate sensor, and said engine engaged with said fuel line, said inlet oil line, and said outlet oil line; and l) a pump controller engaged with said engine controller, said first fluid level sensor, said fuel level sensor, said inlet oil pressure sensor, said outlet oil pressure sensor, said first fluid pressure sensor, and said pump fluid flow rate sensor, said pump controller comprising a user interface, wherein said pump controller provides instructions to said engine controller in response to said level of said fluid in said first fluid tank, said level of said fuel in said fuel tank, said pressure of said oil in said inlet oil line, said pressure of said oil in said outlet oil line, said first pressure of said fluid in said pump, said flow rate of said fluid, and said user interface.
 33. The system of claim 32, further comprising: a) a second fluid tank for containing said fluid, said second fluid tank comprising a tank port; b) a second fluid level sensor for detecting the level of said fluid in said second fluid tank; and c) a second fluid pressure sensor of detecting a second pressure of said fluid, wherein said volute further comprises a second port engaged with said tank port of said second fluid tank and said second fluid pressure sensor, wherein said pump controller is further engaged with said second fluid level sensor and said second fluid pressure sensor, and wherein said pump controller further provides instructions to said engine controller in response to said level of said fluid in said second fluid tank and said second pressure of said fluid in said pump.
 34. The system of claim 32, wherein said first fluid level sensor comprises one of the group consisting of at least one float, a transducer, and combinations thereof.
 35. The system of claim 34, wherein said second fluid level sensor comprises one of the group consisting of at least one float, a transducer, and combinations thereof.
 36. A method of controlling a pump, said pump comprising an engine and an electronic engine controller, said method comprising the steps of: a) characterizing the operation of said pump by (i) providing instructions to said electronic engine controller to cause said engine to rotate at a first characterization speed and (ii) while said engine is rotating at said first characterization speed, detecting a first pump condition of said pump; b) performing a safety check of said pump; c) determining a level of a fluid in a tank; and d) providing instructions to said electronic engine controller, said instructions causing said engine to rotate at a target speed, wherein said instructions are provided to said electronic engine controller by a pump controller, said pump controller comprising a processor, a memory device storing processor instructions, and a user interface.
 37. The method of claim 36, wherein said step of detecting said first pump condition comprises the step of (a) detecting an inlet fluid pressure of said fluid at a fluid inlet of a volute of said pump.
 38. The method of claim 36, wherein said step of detecting said first pump condition comprises the step of (a) detecting an outlet fluid pressure of said fluid at a fluid outlet of a volute of said pump.
 39. The method of claim 38, wherein said step of detecting said first pump condition further comprises the step of (b) detecting an inlet fluid pressure of said fluid at a fluid inlet of said volute of said pump.
 40. The method of claim 36, wherein said step of detecting said first pump condition further comprises the step of (a) detecting a flow rate of said fluid in said volute of said pump.
 41. The method of claim 36, wherein said step of characterizing the operation of said pump further comprises the steps of (iii) providing instructions to said electronic engine controller to cause said engine to rotate at a second characterization speed and (ii) while said engine is rotating at said second characterization speed, detecting a second pump condition of said pump.
 42. The method of claim 41, further comprising the step of: e) determining said target speed from said level of said fluid in said tank, said first characterization speed, said first pump condition, said second characterization speed, and said second pump condition.
 43. The method of claim 36, wherein said step of performing a safety check comprises the steps of: (i) detecting a pressure of oil in an inlet oil line engaged with said engine; (ii) detecting a pressure of oil in an outlet oil line engaged with said engine; and (iii) detecting the level of fuel in a fuel tank.
 44. The method of claim 36, wherein said step of performing a safety check comprises the step of (i) receiving an engine condition of said engine from said electronic engine controller.
 45. The method of claim 44, wherein said engine condition comprises one of the group consisting of a engine block temperature, a torque of said engine, a temperature of said oil in said engine, a pressure of said oil in said engine, a pressure of a coolant in said engine, a temperature of said coolant in said engine, a temperature of a fuel, a indication of the amount of said fuel that has been used, an indication of the rate at which said fuel is used, a temperature of an inlet air at an air inlet of said engine, a pressure of said inlet air, a temperature of an outlet air at an air outlet of said engine, a pressure of said outlet air, a temperature of air at an exhaust of said engine, the running hours of said engine, the total hours of said engine, a fault code, and combinations thereof.
 46. The method of claim 36, further comprising the step of: e) charging a battery, wherein said step of charging said battery comprises the steps of: (i) determining whether said battery needs to be charged; (ii) opening a volute of said pump; and (iii) providing instructions to said electronic engine controller, said instructions causing said engine to rotate at a charging speed for a charging time. 